![]() |
1
0
你能解释一下你想在这里做什么吗
?
这两条指示放在一起没有意义。第二次擦除/重置
根据无符号数的定义,由于无符号数都不小于零,因此使用的无符号比较小于的值与0的立即数总是会产生false。换句话说,负数对于无符号数字来说是不可能的。 如果您想知道数字是否为负数,请使用 签名的 而是进行比较。 仅供参考,你也可以使用移位来提取或复制符号位,所以通过使用算术移位31,得到-1或0,通过使用逻辑移位31,获得1或0。 从根本上讲,你处理的是有符号整数,所以所有的比较操作都应该有符号,除非你真的知道一些不同的东西。 然而 你说得对 需要进行无符号加法和/或减法 以避免处理器的自动签名溢出检测 ,因为如果你点击它,它将终止你的程序。当没有溢出时,无符号加法将产生与有符号加法相同的数字、相同的数值、相同的位模式,因此,这是有效的。如果有溢出,你可以在想的时候检测到,例如在添加之后。 但是,为了有意义,需要使用有符号算术进行比较,而且,这些有符号比较(与有符号加法/减法不同)不会有碰到处理器溢出陷阱的风险。 |
![]() |
Ilya Loskutov · 无法将单词加载到寄存器中 2 年前 |
![]() |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
![]() |
Arya · 汇编语言中的“标签”——操作码 3 年前 |
![]() |
S1mple · 通过gcc生成64位共享库时的“未定义的主引用” 3 年前 |
![]() |
R0M2 · 为什么“GCC”忽略汇编代码的-fno pic 3 年前 |
![]() |
Akagi Akira · 如何在gnu汇编程序中组装MIPS cpu 3 年前 |