7

高レベルのプログラミングを長期間行った後、x86 命令セットの表面に触れただけです。x86 アセンブリ プログラミングについて初めて読んだのは約 20 年前のことですが、Google で調べてみると、無数の命令セットの参照に戸惑いました。新世代のプロセッサ (286、386、486...) を混在させるものから、新しい x86 命令を追加するものまで。AMDのバリエーションは言うまでもありません。

ブートローダーの構築を計画しているので、最初は「標準の x86」に完全に準拠することを考えていましたが、それがいつどこにあるのか、どこに存在するのかさえわかりません。

Intelのドキュメントでさえ同じ道をたどっているようで、別のドキュメントのように、「x86命令セットの標準化が必要です。オペコードの進化は混沌としています」.

標準化の旗印を掲げるのは私の考えではありません。道路を見て、安全に歩ける場所を知りたいだけです。誰かが助けてくれたら、とても感謝しています!

4

2 に答える 2

5

歴史的に、x86 は非常に下位互換性があります。x86-64 はいくつかの非常に古い命令 (BCD 命令など) を破棄しましたが、この種の変更が再び発生する可能性は低いです (少なくとも、64 ビット アドレス空間の移行などの巨大な何かが発生するまでは)。

コードが事実上すべての x86 プロセッサで確実に動作するようにしたい場合は、386 命令セット (コードが 32 ビットの場合) または初期の x86-64 命令セット (64 ビットの場合) に固執してください。

于 2010-01-11T19:59:11.873 に答える
1

ブート ローダーは 16 ビット リアル モードで実行されます (ただし、オペランド サイズ プレフィックスを介して 32 ビット レジスタにアクセスできます)。386 命令リファレンスを取得すれば、安全です。

于 2010-01-11T20:43:03.833 に答える