【发布时间】:2013-11-04 21:47:34
【问题描述】:
如果我有下表:
Case 1: x: 42 y: -15 (y-x) = -57
Case 2: x: -17 y: -17 (y-x) = 0
Case 3: x: 0x7ffffffd y: -67 (y-x) = 2147483584
Case 4: x: 67 y: -0x7fffffffd (y-x) = 2147483584
ZF SF OF 和 CF 的条件代码标志设置(每个标志为零或一)
考虑指令时:cmp1 %eax %ecx 如果%eax 包含x 并且%ecx 包含y?
我了解cmp1 ...,... 的执行者为:cmp1 SRC2,SRC1
这意味着:“设置SRC1 - SRC2的条件代码”
我明白这些标志代表:
OF = overflow (?)
ZF = zero flag i.e. zero...
CF = carry out from msb
SF - sign flag i.e. negative
对于我在表格中的四个案例,我相信标志是:
1) ZF = 0 SF = 1 CF = 0 OF = ?
2) ZF = 1 SF = 0 CF = 0 OF = ?
3) ZF = 0 SF = 0 CF = 1 OF = ?
4) ZF = 0 SF = 0 CF = 1 OF = ?
我说的对吗?请解释CF 和OF 是什么,以及如何确定是否将它们设置为TRUE,并纠正我的任何有缺陷的理解。谢谢。
【问题讨论】:
-
CF andOF` 的使用取决于您将值解释为有符号还是无符号。另请参阅 - stackoverflow.com/questions/19340167/…
标签: c assembly conditional-statements att