• 締切済み

i386は本当に汎用レジスタ?

素朴な疑問なので、「暇なときに回答ください」にしました WEBページを見ていると、i386アーキテクチャのAX,BX,CX,DX・・・が汎用レジスタであるという記述が目に付きます。 ここで、汎用レジスタを、まったく機能が同じで命令に直行性があるもの、と定義すると、i386のレジスタは汎用レジスタであるといえるのでしょうか? i386のプログラムでアセンブラで書かれたものがあるとして、ソースプログラムのたとえばAXとCXを入れ替えてアセンブルして出来たプログラムはもとのものとまったく同じ動作をするでしょうか? (システムコールの引数引渡しレジスタの役割が決まっているというのは別にして)。 ご先祖様の8086は違ったのは覚えているのですが(たとえばSIとDIの機能が違う)。i386になって、本当に直交した命令体系になったのか疑問に思っています。

みんなの回答

  • zzzz0000
  • ベストアンサー率68% (127/186)
回答No.2

http://www.intel.co.jp/jp/download/index.htm#ia32 まずはIA-32 アーキテクチャーの技術資料を読むことからはじめてはどうですか。 >WEBページを見ていると、i386アーキテクチャのAX,BX,CX,DX・・・が汎用レジスタであるという記述が目に付きます。 本当ですか? AXとかSIとかは16ビット(8086)のころの話です。i386アーキテクチャの汎用レジスタという話ならEAXとかになるはずです。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

SIやDIを引き合いに出してる時点で気づいてると思うけれど「i386の(全ての)レジスタ」は勿論汎用ではないよ。 今でもSIやDIのようなレジスタは残ってるしレジスタも増えてるし。 >i386のプログラムでアセンブラで書かれたものがあるとして 16bit用や32bit用に最適化して組んであったら勿論64bitでは問題がありそうだというのは予想が付くんじゃない? 互換性に関しても同じ理屈の筈。

関連するQ&A