Assembly 在Miips汇编语言中使用寄存器
我试图了解miips指令是如何工作的,并查看了Assembly 在Miips汇编语言中使用寄存器,assembly,cpu-registers,Assembly,Cpu Registers,我试图了解miips指令是如何工作的,并查看了bne指令。我想我对它有很高的理解,我只是有几个问题 例如,假设我使用命令bne$R0,$R10,X。这与如果$R0不等于$R10,跳转到地址X(其中地址X计算为PC+4+4*X,而X是某个整数) 当你看一个标准寄存器表时(我在谷歌上发现了几个相同的,我假设它们是标准的),共有31个寄存器。因此,当您为X指定一个值时,是否意味着X的值被限制为4*X
bne
指令。我想我对它有很高的理解,我只是有几个问题
例如,假设我使用命令bne$R0,$R10,X
。这与如果$R0
不等于$R10
,跳转到地址X
(其中地址X
计算为PC+4+4*X
,而X
是某个整数)
- 当你看一个标准寄存器表时(我在谷歌上发现了几个相同的,我假设它们是标准的),共有31个寄存器。因此,当您为
指定一个值时,是否意味着X
的值被限制为4*X
<31?(或者更多限制,因为0-31范围内的几个寄存器保留供系统使用?),或者这将是内存中的地址,而不是寄存器X
- 我知道如果我使用
我使用的是寄存器8-15,$t0-$t7
使用的是寄存器17-23,但是$s0-$s7
在哪里(对于某些整数k 当你看一个标准寄存器表时(我在谷歌上发现了几个相同的,我假设它们是标准的),共有31个寄存器 这并不完全正确。MIPS上有32个通用寄存器,包括$R0-$Rk
,以及一些专用寄存器,如r0
、pc
和lo
,以及浮点寄存器 因此,当您为hi
指定一个值时,这是否意味着X
的值被限制为4*X
<31?(或者更严格,因为0-31范围内的多个寄存器保留供系统使用?),或者这将是内存中的地址,而不是寄存器 两者都不是。指令中将X
的值指定为常量。编码如下所示:X
此指令的编码以6位头(BNE: 0001 01ss ssst tttt iiii iiii iiii iiii
)开始,对每个源寄存器和目标寄存器使用5位(000101
和s
),并将指令的剩余16位用于有符号16位偏移量(t
)。此偏移量被视为相对于下一台PC的指令计数-因此,您可以在每个方向上跳至64 KBi
我知道如果我使用
我使用的是寄存器8-15,$t0-$t7
使用的是寄存器17-23,但是$s0-$s7
(对于一些整数通力,我想到了更多的问题。当取指令时,即当使用操作码时,对吗?修订*:当取指令时,即当操作码加载到指令寄存器时,对吗?$R0-$Rk