Mig*_*uel 5 assembly mips spim mars-simulator immediate-operand
addi当使用十六进制立即数时,是否有关于如何在汇编中解释指令(和其他指令)的标准或建议?
例子:
addi $t0, $zero, 0xffff
Run Code Online (Sandbox Code Playgroud)
我期待这意味着相同的addi $t0, $zero, -1地方0xffff是符号扩展到0xffffffff,如由处理器完成的,而是由一个事实,即火星模拟器解释的十六进制数为32张无符号数和尝试的汇编做惊讶addi $t0, $zero, 0x0000ffff的伪指令(如果启用了伪指令)。
需要明确的是,MARS 的汇编器将该addi $t0, $zero, 0xffff伪指令组装为多条机器指令,这些指令在寄存器中创建该常量 (65535 = 0xffff),然后在启用伪指令的情况下添加它。MARS 的模拟器可以正确模拟0x2008ffff( addi $t0, $zero, -1)等指令。
SPIM 汇编器只是因错误而中止。
我想知道的是,汇编程序是否总是以这种方式解释,以及是否有写或解释的地方,因为我找不到任何东西。