Re: xor cx, cx
In article <squu09abulv.fsf@stellar.co.jp> manmos@stellar.co.jp writes:
>今回zero storeの話が出てきたのですが、
>アセンブラでプログラムを組む時には、
>遅延のためにnopを入れる時でも、
>mov(ldかも?) とかでflagの変わるcpuでmov a,aを
>nopの代わりに入れたりすると、エライ目に合う可能性も捨て切れないわけで、
確かに、今回の話題に限定せずに一般論を意識する場合には、仰る通りです。
>(x86のnopってもともとmov命令だったりしなかったっけ?)
xchg ax,axです。x68(16ビットモード)では、
16ビットレジスタのinc/decやpush/popと並んでaxとのxchgも優遇して、
命令語長の短い高速の命令が準備されています。
その結果、xchg ax,axが唯一の「何もしない1バイト命令」になるわけです。
x86は「ゼロ」がnopでないということを知ったときには
「邪悪な設計だな」と思いました。
(ゼロ2バイトで「add [bx+si],al」になります)
戸田 孝@滋賀県立琵琶湖博物館
toda@lbm.go.jp
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735