assembly - 在 MIPS 中比较 0x00000000 与 0xFFFFFFFF

标签 assembly mips

我正在尝试使用 MIPS 汇编器和 xspim 对 32 位数字列表进行排序。我一直在逐步检查我的代码以查看失败的原因,并注意到在将 0x00000000 与 0xFFFFFFFF 进行比较时,它没有按应有的方式比较这些数字。当程序失败时,我在 $t3 中得到 0x00000000,在 $t4 中得到 0xFFFFFFFF,它看起来像这样:

bge $t3,$t4,lol #因此,如果t3大于或等于我应该向前跳,否则继续。现在的问题是,即使 t3 更小,程序也会跳转。

最佳答案

这是因为 0xffffffff 被解释为 -1,即 2 补码。

有一些具体的说明来处理数字,就好像它们是无符号的一样。使用这些说明。 (例如比较 bgtbgtu,其中 u 代表无符号。)

关于assembly - 在 MIPS 中比较 0x00000000 与 0xFFFFFFFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6224276/

相关文章:

assembly - 在 MIPS 中使用 ori 和 addi 初始化一个值有什么区别?

mips - MIPS 中的加载字节指令

将 C 语言转换为 MIPS 汇编语言

linux - 如何在设备树(.dts)文件中指定uart的设备名称?

assembly - 进入长模式

assembly - 不使用 MOVZX/MOVSX 的汇编中的零/符号扩展

assembly - 线性、物理、逻辑和虚拟内存地址有什么区别?

assembly - 将小于 %ecx 的 1 压入堆栈

用于检查 mips 的 c >= 或 <= 的命令

memory-management - mips 内存管理