私はいくつかのリアル モード コードを書いており、そのために 32 ビット レジスタを使用しています (0x66 プレフィックスを使用)。
Intel のマニュアルを調べましたが、探している情報が見つかりません。参照: http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html (ボリューム 1 の第 1 章から第 7 章、およびボリューム 2 の具体的な説明をざっと読みました)
インテルは、リアル モード コードで次のコードの特定の動作を保証しますか? プロテクトモードコードと同じですか?
mov eax, <some constant>
mov ebx, <some constant>
add ax, bx ; Are the top bits of ax zero'd, sign extended or left?
mov ax, <some constant> ; Does this leave top 16bits unchanged?
; From what I can tell, the top 16bits are unchanged, but where is this documented?
注: 私は、特定の実装がどのように動作するか (つまり、それをチェックするコード -- すべての実装が常に同じように動作する場合を除く) については知りません。Intel がこの動作を文書化した場所だけです。
関連: x86_64 レジスタ rax/eax/ax/al が完全なレジスタ内容を上書きする
違い: この質問は、特にリアル モードの操作と、リンクされた質問からの観察がリアル モードで有効かどうかに関連しています。
リアルモードコードについてこれが文書化されている場所を見つけるのを手伝ってくれる人はいますか?