【发布时间】:2015-09-24 22:27:31
【问题描述】:
我正在看书:[xchg rax, rax]。以下是本书的 0x03 sn-p,我无法理解这一点。
sub rdx,rax
sbb rcx,rcx
and rcx,rdx
add rax,rcx
我从一个星期以来一直在研究这个(每天几分钟)。我研究了一些试图解决它的事情:数字的符号表示、减法的工作原理、减法后 CF 的作用。根据this 的回答和here 给出的列表。我看不出减法后检查 CF 的意义,除非可能溢出。
在什么情况下检查减法后的进位标志有用?
【问题讨论】:
-
溢出 :) 当然,显示的代码不会检查 CF。它使用 CF 将两个 64 位减法链接在一起形成一个 128 位减法(因此得名“进位”)。
-
Best assembly or compilation for minimum of three values 的副本。 This answer 将上述代码片段作为二值最小值的方法。
-
即使没有溢出也有多种情况下设置CF,例如after BZHI、COMIS[SD]或移位/旋转