このコードシーケンスは、「スレッド固有領域のアクセスモデル」で説明されている LE モデルを実装します。
表 8–22 x64: Local Executable スレッド固有変数のアクセスコード
コードシーケンス |
初期の再配置 |
シンボル |
0x00 movq %fs:0, %rax 0x06 leaq x@tpoff(%rax), %rax # %rax - contains address of TLS variable |
<none> R_AMD64_TPOFF32 |
x |
TLS 変数のアドレスではなく TLS 変数の内容を読み込む場合は、次のシーケンスを使用できます。
表 8–23 x64: Local Executable スレッド固有変数のアクセスコード II
コードシーケンス |
初期の再配置 |
シンボル |
0x00 movq %fs:0, %rax 0x06 movq x@tpoff(%rax), %rax # %rax - contains contents of TLS variable |
<none> R_AMD64_TPOFF32 |
x |
次のシーケンスはより短いものです。
表 8–24 x64: Local Executable スレッド固有変数のアクセスコード III
コードシーケンス |
初期の再配置 |
シンボル |
0x00 movq %fs:x@tpoff, %rax # %rax - contains contents of TLS variable |
R_AMD64_TPOFF32 |
x |