kno*_*lya 0 architecture assembly mips addressing-mode
寄存器间接和基本加偏移有什么区别,它如何影响您在MIPS架构上编写汇编的方式?我认为这意味着你只能在一条指令中引用寄存器,那个寄存器必须指向更多的指令?
"寄存器间接"寻址意味着指令将使用的地址(称为"有效地址")取自寄存器的内容,而不是直接在指令本身内编码(这是"绝对"寻址) ).MIPS具有针对这两种寻址模式的跳转指令:
j 0x1234
Run Code Online (Sandbox Code Playgroud)
表示"跳转到地址0x1234"(绝对寻址),而
jr $ra
Run Code Online (Sandbox Code Playgroud)
表示"跳转到$ra寄存器中包含的地址"(寄存器间接寻址).
"Base plus offset"寻址意味着从寄存器的内容中获取基址,然后添加偏移(在指令本身中编码).MIPS使用此寻址模式进行加载和存储.例如:
lw $t0, 0($a0)
lw $t1, 4($a0)
Run Code Online (Sandbox Code Playgroud)
...如果$a0包含0x1234,$t0则将加载字地址0x1234(有效地址是寄存器的内容,加上偏移量为0),并将$t1加载字地址0x1238
(有效地址是内容)寄存器,加上4)的偏移量.
如您所见,当偏移量为0时,这相当于寄存器间接寻址.