汇编 x86 寄存器有符号或无符号

标签 assembly x86 cpu-registers unsigned signed

我知道这是一个非常简单的问题,但我找不到答案。
x86 程序集中的寄存器(eax、ebx edx 等)是有符号的还是无符号的?如果默认情况下它们是有符号的,例如,如果我们将变量声明为 unsigned int,计算机如何知道将寄存器视为无符号?谢谢!

最佳答案

CPU 不知道也不关心。相反, 中的位旗帜 register 是针对某些操作设置的,您的程序如何处理这些标志取决于源代码告诉它的内容。

例如。,

mov eax, 0FFFFFFFFh
test eax, eax
js isNegative

对比
mov eax, 0FFFFFFFFh
test eax, eax
jb isNegative

第一个跳转到 'IsNegative' 因为 test在这里设置标志标志。第二个没有,因为test将进位标志重置为 0jb只有在 1 时才会跳转.

关于汇编 x86 寄存器有符号或无符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27677906/

相关文章:

arrays - 将数组内容复制到程序集中的另一个数组

assembly - 在哪里可以了解我的计算机的低级工作原理?

assembly - 是否有支持带偏移量的寄存器间接寻址的 CALL 指令?

c - 在 Linux 上混合系统调用写入和 printf

windows - x86 汇编 - Windows 下的非法操作码 0xff/7

c - 在CPU寄存器中存储变量

c - 进行中断链接分配

assembly - 为什么(或不是?)SFENCE + LFENCE 等价于 MFENCE?

architecture - 将二进制转换为 arm

Verilog,FPGA,使用单元化寄存器