我试图将 .asciiz 参数加载到寄存器中,但出现错误,
代码:
.data
stp:
.asciiz "stop"
.text
.globl main
main:
la $t1, stp
lw $t1, 0($t1)
我遇到异常:inst/data fetch 中的地址未对齐,
有没有办法将 .ascii 作为单词加载到寄存器中?
我想将输入变量与 stp 中保存的文本进行比较,
我做错了什么?
最佳答案
您可能需要分别使用 lb
或 lbu
指令来进行符号或零扩展字节大小的加载。
如果要将所有 4 个字符作为单词加载,请通过添加适当的汇编指令(例如 .align 2
)来确保字符串对齐。或者,使用 ulw
伪指令,汇编器将其转换为正确的序列。
关于assembly - 数据中来自 .asciiz 的 MIPS lw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13555007/