6.5.1 fixupブロック

各 fixup ブロックは次の構造体で始まります。

オフセット サイズ フィールド 解説
0 4 Page RVA イメージ ベースにページRVAを加えたものが各オフセットに加算されて、fixupがどこに適用される必要があるかの仮想アドレスになります。
4 4 Block Size 後に続くタイプ/オフセットフィールドと、ページRVAおよびブロック サイズ フィールドを含めた、fixupブロックの合計バイト数。

ブロック サイズ フィールドの後には任意の数のタイプ/オフセット エントリが続きます。各エントリはワード(2バイト)で、次の構造を持ちます。

オフセット サイズ フィールド 解説
0 4 ビット Type ワードの上位4ビットが格納されます。値はどのタイプのfixupが適用されるかを示します。これらのfixupsについては、fixupタイプで説明されています。
0 12 ビット Offset ワードの残り12ビットが格納されます。開始アドレスからのオフセットは、このブロックのページRVAフィールドで指定されています。このオフセットは、fixupがどこに適用されるかを示します。

fixupを適用するために、望ましいベース アドレスとイメージが実際にロードされているベースとの間の相違としてのデルタが計算されます。イメージが望ましいベースにロードされている場合はデルタはゼロになり、fixupは適用される必要がなくなります。


戻る