如何知道在执行时从哪个寄存器读取



我有一个关于这类测验的问题。这背后的理论是什么?

给定以下指令,在执行时从哪个寄存器读取?(选择所有适用项(和$sp、$gp、$s4

A$gp(答案(B.4美元(答案(C.每股D.这些都没有。

磅$sp7472($v1(

A$v1(答案(B.程序计数器C.每股D.这些都没有。

以下手册非常适合MIPS汇编语言。它将指令汇编形式与寄存器转移表示法相关联,该表示法描述处理器对该汇编指令所做的操作,例如,第一条指令是sll $rd, $rt, shamt,用于其操作:R[$rd] ← R[$rt] << shamt

如果指令的执行为寄存器分配了一个值,则寄存器就是目标(该值很可能会更改寄存器所保持的值,但不一定要更改;寄存器所保留的旧值会丢失(。当存在目标时,寄存器传输符号将显示寄存器是如何更新的,即如何计算新值。

您可以通过查看寄存器相对于表示赋值的的位置来确定哪些寄存器是源寄存器还是目标寄存器。当在R[$rd] ←中位于左侧时,即为分配的目标,因此寄存器$rd为目标,而当它们出现在分配的右侧时,即是源寄存器,如在← R[$rt] << shamt中。

(如您所知,$通常用于将MIPS汇编程序/汇编语言作为寄存器名称的前缀。(

MIPS绿表也很好,但它面向机器代码,而不是汇编语言,所以你必须知道机器代码操作数与同一指令的汇编形式的顺序(你可以从第一个链接中看到(。在MIPS汇编语言中,目标寄存器(当存在时(始终是第一个操作数,尽管在机器代码中,目标注册表(当存在(始终是最后一个寄存器字段。

在绿表中,相同的MIPS指令具有以下定义:

作左移逻辑<shamt
描述 助记符 格式

最新更新