オペレーティングシステムに依存!
IA32 の下で Windows オペレーティング システムを探している場合、API はいくつかのアプリケーションの仮想メモリ アドレス空間を予約します。
- CS セグメントは、プログラムまたはコード メモリの先頭を指します。
- DS セグメントは、変数またはデータ メモリの先頭を指します。
- SS セグメントは、スタック メモリの先頭を指し、DS と同じです。
- 追加セグメントとしての ES は通常、文字列転送命令 (lodsb、stosw、...) に使用され、DS と同じです。
- Win32 Thread Information Blockのような OS カーネル データ上の別の追加セグメント ポイントとしての FS 。
- 別の余分なセグメントとしての GS は、ロードされたアプリケーションの割り当てられた仮想メモリ アドレス空間の先頭として 0 です。
FS セグメント経由で「Win32 スレッド情報ブロック」にアクセスする例:
function GetThreadId: integer;
//result := GetCurrentThreadId;
asm
mov eax, fs:[$18] //eax := thread information block
mov eax, [eax + $24] //eax := thread id
end; { GetThreadId }
Sheck また: x86 メモリ セグメンテーション