たとえば、以下の C 式の場合、
int x =-1;
unsigned y = 1;
if(x>y)
x+=y;
コンパイル中、アセンブリ バージョンは次のようになります。
(%eax では x、%edx では y と仮定)
mov $-1 %eax
mov $1 %edx
mov %eax %edp
add %edx %edp
cmp %eax %edx
cmovg %edp %eax
cmovg は ~(SF^OF)&~ZF の評価に基づいて実行されるため、CPU が命令 cmp %eax %edx を実行するときに CF も設定されますか? 2 進数形式の負の数 -1 は 2<<32-1 と同じであることに注意してください。