0

たとえば、以下の 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 と同じであることに注意してください。

4

2 に答える 2