[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2646] Re: About NASM



光成です。

>  そのようです。いつからかIA-32の仕様が変わったようです。i486の
>頃は、MOV(AX,CS);にオペランドサイズオーバーライドプリフィクスを
>付ける必要はないみたいに書かれていました。

手持ちのIntelのマニュアルによるとPentiumPro以降のCPUではmov eax, dx
とするとeaxの上位16bitは0クリアされると書いてあります。
それ以前のCPUではeaxの上位16bitは未定義です。

逆向きのmov dx, axの場合はどのプロセッサでも0x66は不要です。
大抵のアセンブラではmov ds,axを書くと0x66プレフィックスがつくため
プレフィックスのつかないmov dx, eaxとかけばよい(dsにはaxが代入される)
と書かれています。

ところで私個人の意見からするとソースが公開されていて新命令にも自分で
拡張できプラットフォーム非依存なコードを書けるNASM以外は使う気には
ならないです。こないだのmandelもLinux上で作っていました。
私には数バイトの差に関する優先順位は極めて低いです。