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

QtSpim为何将.asciiz字符串按little-endian字存储?与big-endian存法矛盾

MIPS中.word与字符串存储的endian疑惑解答
  • MIPS的大端存储规则是统一的
    MIPS作为大端架构,所有数据的字节存储规则完全一致:高位字节存放在低地址,低位字节存放在高地址。比如你定义的.word 0x1234ffff,实际存储时地址0x10010004是0x12,0x10010005是0x34,0x10010006是0xff,0x10010007是0xff,完全符合大端逻辑。

  • 字符串的存储是按字节顺序排列
    .asciiz指令会将字符串的每个字符按顺序逐个存储为单字节,从低地址到高地址依次排列。以"Hello World!"为例,第一个字符'H'(ASCII码0x48)存在0x10010008,第二个'e'(0x65)在0x10010009,第三个'l'(0x6c)在0x1001000a,第四个'l'(0x6c)在0x1001000b,这和大端的字节存储规则完全匹配。

  • QtSpim的显示逻辑造成了误解
    你看到的"地址0x10010008开始的字节顺序为6c、6c、65、48",是QtSpim在展示字单元时的特殊逻辑:它会把一个字的4个字节按小端顺序反向显示,而非实际存储的大端顺序。但实际硬件中,该地址范围的字节仍然是0x48、0x65、0x6c、0x6c,和字符串的字符顺序一致。

  • 验证方式
    可以用lb指令分别加载0x10010008到0x1001000b的字节并打印,输出的字符顺序会是H、e、l、l,这就能证明实际存储和.word的大端规则完全一致,不存在矛盾。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:55:23