AMD64(x86_64)架构abi文档:

本篇基于<<AMD64(x86_64)架构abi文档:中>>延伸章节。

10.3.2 静态线程局部变量
10.3.3 TLS链接器优化
10.4 内核支持
10.5 编码示例
10.5.1 间接分支
11 备用代码序列的安全性
11.1 没有PLT的代码序列
11.1.1 通过GOT槽间接呼叫
11.1.2 没有PLT的线程本地存储
12 英特尔MPX扩展
12.1 参数传递和返回值
12.1.1 归类
12.1.2 通过
12.1.3 返回值
12.1.4 变量参数列表
12.2 程序加载和动态链接
附录A
A.1 32位程序的执行
A.2 AMD64 Linux内核约定
A.2.1 调用约定
A.2.2 堆栈布局
A.2.3 其他评述
附录B
B.1 合并GOTPLT和GOT插槽
B.2 优化GOTPCRELX重新定位
目录预览


10.3.2 静态线程局部变量

  对于静态线程局部变量x:

static __thread int x;

  本地动态模型将x的地址加载到%rax中


Table 10.5: Local Dynamic Model Code Sequence With Lea

在这里插入图片描述

  or

Table 10.6: Local Dynamic Model Code Sequence With Add

在这里插入图片描述


  对于具有TLSDESC的代码序列,局部动态模型与一般动态模型相似。同样的编码要求也适用于法律指令。



Table 10.7: General Dynamic Model Code Sequence with TLSDESC

在这里插入图片描述


  局部动态模型,加载值x到%edi



Table 10.8: Local Dynamic Model Code Sequence, II

在这里插入图片描述


  本地Exec模型加载x到%rax的地址



Table 10.9: Local Exec Model Code Sequence With Lea

在这里插入图片描述


  or



Table 10.10: Local Exec Model Code Sequence With Add

在这里插入图片描述


  本地执行模型,II装载x到%edi的值



Table 10.11: Local Exec Model Code Sequence, II

在这里插入图片描述


  本地执行模型,III装载x到%edi的值



Table 10.12: Local Exec Model Code Sequence, III

在这里插入图片描述



10.3.3 TLS链接器优化

  General Dynamic To Initial Exec加载x到%rax的地址


Table 10.13: GD -> IE Code Transition

在这里插入图片描述




Table 10.14: GDesc -> IE Code Transition

在这里插入图片描述




Table 10.15: GD -> LE Code Transition

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坤昱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值