Assembly MIPS lw指令到底做什么?

Assembly MIPS lw指令到底做什么?,assembly,mips,instructions,Assembly,Mips,Instructions,救命啊!我是汇编新手,我正在尝试了解这个命令的作用 lw %t5, 100($t8) 我也知道左边是目的地,右边是来源地 lw Reg.Dest, Offset(Reg.Source) 我相信它会把数据从一个地方写到另一个地方,但我不了解细节 有人能给我解释一下这个命令或者给我指出正确的方向吗?您提供的以下定义是正确的 lw Reg.Dest, Offset(Reg.Source) 让我们将其转换为您的代码 lw $t5, 100($t8) 这里有Load Word(lw)指令,带有Re

救命啊!我是汇编新手,我正在尝试了解这个命令的作用

lw %t5, 100($t8)
我也知道左边是目的地,右边是来源地

lw Reg.Dest, Offset(Reg.Source)
我相信它会把数据从一个地方写到另一个地方,但我不了解细节


有人能给我解释一下这个命令或者给我指出正确的方向吗?

您提供的以下定义是正确的

lw Reg.Dest, Offset(Reg.Source)
让我们将其转换为您的代码

lw $t5, 100($t8)
这里有Load Word(lw)指令,带有
Reg.Dest=$t5
Offset=100
,以及
Reg.Source=$t8


总之,这意味着将地址
$t8+100
处的4个字节加载到寄存器$t5

您提供的以下定义是正确的

lw Reg.Dest, Offset(Reg.Source)
让我们将其转换为您的代码

lw $t5, 100($t8)
这里有Load Word(lw)指令,带有
Reg.Dest=$t5
Offset=100
,以及
Reg.Source=$t8


总之,这意味着将地址
$t8+100
处的4个字节加载到寄存器$t5

lw
是一条I型指令:

  +--------+----+----+-----------+
I | opcode | rs | rt | immediate |   (instruction fields)
  +--------+----+----+-----------+
       6     5     5      16         (bit length)
它在RTL()中具有以下规范:

在哪里

汇编语法是
lw-rt,immediate(rs)
,其中
rt
rs
,和
immediate
分别是寄存器名和小整数常量

有关所有说明,请参阅


请注意,
lw
操作码通常还支持许多伪指令形式,这些伪指令形式可扩展为多个实际的MIPS指令。要了解它们的作用,我们可以检查扩展的各个指令。有一种形式对于加载全局变量特别有用:
lw rt,globalDataLabel
。在这种形式中,未提供基址寄存器(
rs
),它扩展为2条指令,完成将全局字加载到目标寄存器中。

lw
是一条I型指令:

  +--------+----+----+-----------+
I | opcode | rs | rt | immediate |   (instruction fields)
  +--------+----+----+-----------+
       6     5     5      16         (bit length)
它在RTL()中具有以下规范:

在哪里

汇编语法是
lw-rt,immediate(rs)
,其中
rt
rs
,和
immediate
分别是寄存器名和小整数常量

有关所有说明,请参阅


请注意,
lw
操作码通常还支持许多伪指令形式,这些伪指令形式可扩展为多个实际的MIPS指令。要了解它们的作用,我们可以检查扩展的各个指令。有一种形式对于加载全局变量特别有用:
lw rt,globalDataLabel
。在这种形式中,没有提供基址寄存器(
rs
),它扩展为2条指令,完成将全局字加载到目标寄存器中。

lw
是“加载字”的简写,这是指令所做的事情——它将一个字的数据从内存加载(读取)到寄存器中


因此,第一个操作数(目标)是寄存器,而第二个操作数指定内存中的位置。位置(地址)是通过向寄存器的内容添加一个偏移量来计算的。

lw
是“加载字”的缩写,这是指令所做的——它将一个数据字从内存加载(读取)到寄存器中


因此,第一个操作数(目标)是寄存器,而第二个操作数指定内存中的位置。位置(地址)是通过向寄存器的内容添加偏移量来计算的。

它将
$t8+100
处的值加载到寄存器
$t5
%t5
是一个语法错误。我想你的意思是
$t5
?它将
$t8+100
处的值加载到寄存器
$t5
%t5
是一个语法错误。我猜你的意思是
$t5