You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MIPS汇编lb指令执行结果及偏移量差异咨询

MIPS指令执行结果分析

前提说明

MIPS架构默认采用大端字节序(高字节存储在低内存地址),内存位置src存储的字为0x12348765,其在内存中的字节分布如下:

内存地址存储字节
src0x12
src+10x34
src+20x87
src+30x65

寄存器$t1初始值为0x87654321。

指令执行过程与最终结果

  1. la $s0, src:将src的内存地址加载到寄存器$s0,此时$s0指向src的起始地址。
  2. lb $t1, 1($s0):
    • 计算有效地址:$s0的值 + 1,即src+1的内存地址。
    • 从该地址读取1个字节的数据:0x34。
    • 执行符号扩展:由于0x34的二进制最高位为0(表示正数),扩展为32位后结果为0x00000034。
    • 将扩展后的值写入$t1,覆盖初始值,因此$t1的最终值为0x00000034。

使用0($s0)的差异

若替换为lb $t1, 0($s0):

  • 有效地址为src的起始地址,读取的字节是0x12。
  • 符号扩展后得到0x00000012,最终$t1的值为这个结果。

关于字节选取的疑问

你纠结的0x65和0x87对应的是src+3和src+2地址的字节:

  • 0x65在src+3位置,只有当偏移为3时才会被读取;
  • 0x87在src+2位置,偏移为2时会被读取。
    偏移1对应的是src+1处的0x34,所以不会取到这两个字节。

内容的提问来源于stack exchange,提问作者worldlife

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 02:33:28