私はアセンブリ言語を学んでおり、私はFWORD
(6バイト)に来ました。私はF
の略で何が好奇心ですか? wikiページには何もないし、MSDNでこれについて何もしていない。FWORDのFの意味は何ですか?
https://en.wikipedia.org/wiki/FWord
https://msdn.microsoft.com/en-us/library/26c4cbza.aspx
私はアセンブリ言語を学んでおり、私はFWORD
(6バイト)に来ました。私はF
の略で何が好奇心ですか? wikiページには何もないし、MSDNでこれについて何もしていない。FWORDのFの意味は何ですか?
https://en.wikipedia.org/wiki/FWord
https://msdn.microsoft.com/en-us/library/26c4cbza.aspx
文字FWORDにおける「F」は「遠い」FWORDタイプの主な用途である32ビットfarポインタのような単語を表します。 32ビットfarポインタは、最初の4バイトに32ビットのオフセットを持ち、最後の2バイトに16ビットのセレクタを持っています。
ほとんどの32ビットオペレーティングシステムでは、32ビットの4Gアドレス空間全体がすべてのセレクタからアクセスできるため、通常、32ビット遠方ポインタはあまり使用されません。低レベルのオペレーティングシステムコードでは、CSセレクタがコードが実行する権限レベルと、コードが16ビット、32ビット、または64ビットモードで実行されるかどうかを判断するため、低レベルのオペレーティングシステムコードで使用されることがあります。
おかげで多くのことを意味し、今私は、保護モードとGDTR(グローバル記述子テーブルに実モードから切り替える方法を学んでいますレジスタ)は6バイトです。 'lgdt fword ptr gdtr' –
@HrantCharchyanこの場合、LGDT命令のメモリオペランドは6バイトですが、遠いポインタではありません。代わりに、下位2バイトでは16ビットの制限があり、上位4バイトでは32ビットのベースです。 –
@HrantCharchyan C構造体を使用している場合は、不揃いに注意してください。 16ビットの長さは 'lgdt'オペランドの32ビットの前に来ます。慎重でない場合、コンパイラは長さの後に2つのパディングバイトを追加して、ベースフィールドを32ビット境界に揃えます。ベースに「低」/「高」の16ビット値のペアを使用するか、コンパイラに構造体がパックされていることを伝えます。 – doug65536
"farword"のようです。あなたがこのウェブサイト上でそれを見つけることができ、セクション12は:
それはFAR' 'ため – Jester