gpt4 book ai didi

math - x86 中的进位/溢出和减法

转载 作者:行者123 更新时间:2023-12-03 23:14:52 24 4
gpt4 key购买 nike

我正在努力解决 x86 中的溢出和携带标志。

据我了解,对于有符号 2 的补码相加,标志只能以四种方式之一生成(我的示例是 4 位数字):

  • pos+pos = neg(溢出)
  • 0111 + 0001 = 1000 (7 + 1 = -8)
  • pos+neg = pos(进位)
  • 0011 + 1110 = 0001 (3 + -2 = 1)
  • 负+负 = 负(进位)
  • 1111 + 1111 = 1110 (-1 + -1 = -2)
  • neg+neg = pos(溢出和进位)
  • 1000 + 1001 = 0001 (-8 + -7 = 1)

  • 那么,在 x86 程序集中,从 A 中减去 B 会生成与添加 A 和 -B 相同的标志吗?

    最佳答案

    这是一个可能有帮助的引用表。这显示了可以由 x86 上的 ADD 和 SUB 指令产生的 4 个算术标志的每种可能组合的示例。 'h' 'ud' 和 'd' 代表每个值的十六进制、无符号十进制和有符号十进制表示。例如,SUB 的第一行表示 0xFF - 0xFE = 0x1 没有设置标志。

    但是,我认为简短的故事是亚历克斯的答案是正确的。

     ADD
    A B A + B Flags
    --------------- ---------------- --------------- -----------------
    h | ud | d | h | ud | d | h | ud | d | OF | SF | ZF | CF
    ---+------+-------+----+------+-------+----+------+-------+----+----+----+---
    7F | 127 | 127 | 0 | 0 | 0 | 7F | 127 | 127 | 0 | 0 | 0 | 0
    FF | 255 | -1 | 7F | 127 | 127 | 7E | 126 | 126 | 0 | 0 | 0 | 1
    0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0
    FF | 255 | -1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1
    FF | 255 | -1 | 0 | 0 | 0 | FF | 255 | -1 | 0 | 1 | 0 | 0
    FF | 255 | -1 | FF | 255 | -1 | FE | 254 | -2 | 0 | 1 | 0 | 1
    FF | 255 | -1 | 80 | 128 | -128 | 7F | 127 | 127 | 1 | 0 | 0 | 1
    80 | 128 | -128 | 80 | 128 | -128 | 0 | 0 | 0 | 1 | 0 | 1 | 1
    7F | 127 | 127 | 7F | 127 | 127 | FE | 254 | -2 | 1 | 1 | 0 | 0


    SUB
    A B A - B Flags
    --------------- ---------------- --------------- -----------------
    h | ud | d | h | ud | d | h | ud | d || OF | SF | ZF | CF
    ----+------+-------+----+------+-------+----+------+-------++----+----+----+----
    FF | 255 | -1 | FE | 254 | -2 | 1 | 1 | 1 || 0 | 0 | 0 | 0
    7E | 126 | 126 | FF | 255 | -1 | 7F | 127 | 127 || 0 | 0 | 0 | 1
    FF | 255 | -1 | FF | 255 | -1 | 0 | 0 | 0 || 0 | 0 | 1 | 0
    FF | 255 | -1 | 7F | 127 | 127 | 80 | 128 | -128 || 0 | 1 | 0 | 0
    FE | 254 | -2 | FF | 255 | -1 | FF | 255 | -1 || 0 | 1 | 0 | 1
    FE | 254 | -2 | 7F | 127 | 127 | 7F | 127 | 127 || 1 | 0 | 0 | 0
    7F | 127 | 127 | FF | 255 | -1 | 80 | 128 | -128 || 1 | 1 | 0 | 1

    关于math - x86 中的进位/溢出和减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8965923/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com