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