整数の絶対値を取る abs という関数がありますが、x86 asm では次のような方法を考えた人がいます。
| 入力:eax, 出力:abs(eax) |
| mov | ecx, eax |
| sar | eax, 31 |
| xor | ecx, eax |
| sub | ecx, eax |
P6 だとこんな方法が使えます。
| 入力:eax, 出力:abs(eax) |
| mov | ecx, eax |
| neg | eax |
| cmovs | eax, ecx |
by seclan
©1999-2025
seclan. All rights reserved.
8.46 msec