代码之家  ›  专栏  ›  技术社区  ›  Ajax1234

在MacOSX上处理x86程序集GNU中的寄存器整数值环绕

  •  0
  • Ajax1234  · 技术社区  · 6 年前

    我正在使用MacOSX上x86 GNU Gas的一个简单示例,其中整数值为 300 移动到 eax 注册。如预期,仅 300 mod 256 (价值 44 )实际存储在 %eax ,作为 echo$? Mac终端显示:

    .globl _main
    _main:
       pushq %rbp
       movq %rsp, %rbp
       subq $16, %rsp
       movl $300, %eax;
       leave
       ret
    

    然而,我的印象是有一个溢出/环绕标记来表示发生了环绕,或者有一个寄存器来存储整数除法的结果。 300个 256 结果是 1 .我找不到任何详细说明x86 GNU进程(如果存在)的信息。有人知道如何访问wraparound值或溢出标志吗?

    1 回复  |  直到 6 年前
        1
  •  3
  •   prl    6 年前

    你的问题中有几个误解。

    mov $300, %eax 是否将300存储到EAX中。

    原因 echo $?