MIPS" la " псевдо-инструктаж
в MIPS,la
инструкция превращается в lui
и ori
. Однако Mars Simulator, похоже, не делает этого вообще. Когда я сбрасываю следующий машинный код:
.text
la $a0, array
la $a1, array_size
lw $a1, 0($a1)
.data
array: .word 0:10
array_size: .word 10
message: .asciiz "The sum of numbers in array is: "
Я:
00100000000001000010000000000000
00100000000001010010000000101000
10001100101001010000000000000000
это очевидно. Это демпинг la
как одна инструкция. Что делает Марс? Как я могу заставить его интерпретировать la
as lui
и ori
?
спасибо,
1 ответов
здесь происходит то, что ваш ассемблер компилирует эти la
s as addi $<dest>, , <value>
. Последовательность двух инструкций требуется только для значений, которые не могут быть представлены в 16-битном немедленном; значения, которые вы используете здесь, выглядят как 0x2000
и 0x2028
, поэтому они вписываются в одну инструкцию.
как я могу заставить его интерпретировать
la
aslui
иori
?
загрузить больше константы. :)
ваш ассемблер также может иметь возможность заставляйте использовать полную последовательность, даже если это не нужно.