assembly - 数据中来自 .asciiz 的 MIPS lw

标签 assembly mips

我试图将 .asciiz 参数加载到寄存器中,但出现错误,
代码:

.data


    stp:
    .asciiz "stop"

.text

.globl main

main:

la $t1, stp
lw $t1, 0($t1)

我遇到异常:inst/data fetch 中的地址未对齐,

有没有办法将 .ascii 作为单词加载到寄存器中?

我想将输入变量与 stp 中保存的文本进行比较,
我做错了什么?

最佳答案

您可能需要分别使用 lblbu 指令来进行符号或零扩展字节大小的加载。

如果要将所有 4 个字符作为单词加载,请通过添加适当的汇编指令(例如 .align 2)来确保字符串对齐。或者,使用 ulw 伪指令,汇编器将其转换为正确的序列。

关于assembly - 数据中来自 .asciiz 的 MIPS lw,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13555007/

相关文章:

assembly - 在 NASM 汇编中计算哈希

java - asm 字节码中的字符串相等性

assembly - 如何知道 MIPS 指令格式 R、I 或 J

mips - MIPS 中整数的表示

gcc - bash : ./mips-linux-gnu-gcc: 无法执行二进制文件错误

string - MIPS 问题 : Returning ($v0), 参数、jal 和 jr $ra(包含代码)

assembly - sparc 程序集和 %y 寄存器

c - 如何使用printf调试linux内核的汇编代码

assembly - 循环检查汇编中的小写字母

golang 二进制文件不在 mips 上运行