关于MIPS架构中lw与sw指令rs/rt寄存器使用的正确性求证
MIPS架构中lw/sw指令的rs/rt寄存器正确用法
首先明确MIPS指令集的标准定义,这两个指令的寄存器分工是固定的,不存在歧义:
lw(加载字)指令:指令格式为
lw $rt, offset($rs)
执行逻辑是:计算内存地址 =$rs寄存器的值 + 立即数offset,然后把该地址处的4字节数据加载到$rt寄存器中。这里$rs是基址寄存器(提供内存地址的基础值),$rt是目标寄存器(用来存放读取到的数据)。sw(存储字)指令:指令格式为
sw $rt, offset($rs)
执行逻辑是:计算内存地址 =$rs寄存器的值 + 立即数offset,然后把$rt寄存器中的4字节数据存储到该地址处。这里$rs同样是基址寄存器,$rt是源寄存器(提供要写入内存的数据)。
你遇到的资料描述矛盾,大多是因为部分资料在表述时混淆了"源/目标"的语境:比如讲lw时,有人误把接收数据的$rt说成"源"(但实际是数据的最终去向);讲sw时,误把提供数据的$rt说成"目标"(但实际是数据的来源)。但从MIPS架构的官方规范和硬件执行逻辑来看,上面的定义才是标准的。
内容的提问来源于stack exchange,提问作者mchaudh4
相关产品推荐
相关产品推荐

