stan wu wrote:
Hi 各位大大這應該...(恕刪)
stan wu wrote:
如果改寫成 完全拋棄不使用 if 或是 ? : 之類的判斷式...
還原成原始形式就沒有 if 了.
if => comparison + conditional jump
conditional jump 的依據是 flag, comparison 會改變 flag.
但是拆解過的動作沒有任何個別部份能與 if 產生等效的結果.
(debug)
mov ax,1
cmp ax,1
mov dx,113
jz 10e
mov dx,117
mov ah,9
int 21
ret
db "yes$"
db "no$"
..... 會不會小題大做了
hxxX54yPZ5HH5VHP\hmpX5gTPh99X5J4Ph00X5YBPjjhexX5exHPDX52JP555554P5ZZ5rr
softwind1314 wrote:
不對歐 這位大大 你有用到 jmp,
是 cmp 吧, 前面就說這是break down. 也就是說 cmp 或 jz 本身都沒有 if 的效果. 而是組合起來的行為形成 if. 用 conditional instructions 也是依賴 condition field 和 condition flags, 在這個問題上兩者是等效的. (cmp 只影響 flag)
如果你想的是 cmovz 這樣的指令, 會變成用 if 解 if. 因為它本身就是 if .
前面那個不要用 cmp 也可以, 用 xor 0xfffe + shr*16 可以換過來, 只是那樣看起來很蠢.
hxxX54yPZ5HH5VHP\hmpX5gTPh99X5J4Ph00X5YBPjjhexX5exHPDX52JP555554P5ZZ5rr


























































































