gpt4 book ai didi

linux - 如何解释 x86-64 上的段寄存器访问?

转载 作者:IT王子 更新时间:2023-10-29 00:19:21 30 4
gpt4 key购买 nike

有了这个功能:

mov    1069833(%rip),%rax        # 0x2b5c1bf9ef90 <_fini+3250648>
add %fs:0x0,%rax
retq

我如何解释第二条指令并找出添加到 RAX 中的内容?

最佳答案

这段代码:

mov    1069833(%rip),%rax        # 0x2b5c1bf9ef90 <_fini+3250648>
add %fs:0x0,%rax
retq

返回线程局部变量的地址。 %fs:0x0 是 TCB(线程控制 block )的地址,1069833(%rip) 是从那里到变量的偏移量,这是已知的,因为变量驻留在程序中或在程序加载时加载的某些动态库中(在运行时通过 dlopen() 加载的库需要一些不同的代码)。

这在 Ulrich Drepper 的 TLS document 中有详细解释。 ,特别是 §4.3 和 §4.3.6。

关于linux - 如何解释 x86-64 上的段寄存器访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7844963/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com