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

MIPS指针数组打印32字节对齐字符串时首元素乱码问题求助

问题根因

核心问题是指针数组越界写入,覆盖了首个字符串的前4字节,具体原因如下:

  • 你声明的指针数组dataAddr分配了64字节空间,MIPS架构下每个指针占4字节,最多只能存储16个指针。
  • 初始化指针的循环判断条件为ble $t0, 16, startCode,$t0从0开始计数,循环会执行17次:第17次写入时,地址已经超出了dataAddr的64字节范围,刚好覆盖了紧随其后的字符串段dataName的前4个字节,也就是第一个字符串的前4个字符,因此首字符串输出会出现乱码。
    你测试15个字符串时问题消失,是因为15个字符串只需要15个指针,即使循环多执行了2次,覆盖的是未被使用的对齐填充空间,不会破坏有效字符串内容。
修复方案

二选一即可:

  • 修改循环判断条件,把17次循环改为刚好16次,将代码里的
ble $t0, 16, startCode

修改为:

blt $t0, 16, startCode
  • 如果你后续需要扩展更多字符串,可以扩大dataAddr的分配空间,需要存储N个指针就分配4*N字节的空间,示例(支持最多32个指针):
dataAddr:   .space 128       # 支持最多32个指针

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:45:05