In article <e0r2s6$umh$1@bluegill.lbm.go.jp>,
 toda@lbm.go.jp writes:
> In article <squy7ymc2ha.fsf@stellar.co.jp> manmos@stellar.co.jp writes:
> >> mov cx, 0
> >> でも同じ(同じ結果を得るためのコードとしてはどちらでも間違いではない)と
> >> 考えていいのでしょうか?
> >いろんなCPUがありますので、一概にいえませんが、前者の場合間違いなく
> >zero flagがセットされるはずですが、後者の場合どうなるかはCPUによるでしょう。
> うーむ、フラグの状態が違うという問題があるのは失念してました。
> (x86のmovはフラグを変化させないハズ)

最近x86でアセンブラやってないので、明確にはいえなかったのですが、その
ような記憶があるような…

> しかし、
> >> 例えば、CX レジスタを全部 0 で埋める場合、
> という目的だったら、その段階でフラグがどうなってようと
> 関係ないことの方が多いような気も……

ただ、アセンブラと高級言語の大きな差が、演算によって、目的のレジスタ/
メモリだけでなくフラグも変わるいうのがあると思うのです。今回zero store 
の話が出てきたのですが、アセンブラでプログラムを組む時には、遅延のため
にnopを入れる時でも、mov(ldかも?) とかでflagの変わるcpuでmov a,aをnop
の代わりに入れたりすると、エライ目に合う可能性も捨て切れないわけで、
(x86のnopってもともとmov命令だったりしなかったっけ?)どの命令がどうい
う結果でフラグを変えることを知っておくのはとても重要です。


-- 
   ___     わしは、山吹色のかすてーらが大好きでのぅ
 [[o o]]            ふぉっふぉっふぉ
   'J'     森下 お代官様 MaNMOS 英夫@ステラクラフト
PGP Finger = CD EA D5 A8 AD B2 FE 7D  02 74 87 52 7C B7 39 37