C 这个大会发言是什么意思?

C 这个大会发言是什么意思?,c,gcc,assembly,64-bit,x86,C,Gcc,Assembly,64 Bit,X86,我正在查看gcc使用-s标志生成的汇编代码。有些语句如下所示 movl is_leader(%rip), destination 这里,is_leader是C代码中类型为int的全局定义变量。我不明白的是这里的术语是领导者(%rip)。rip不是指令指针吗?我需要知道这个语句是如何用来访问isleader的,它可能与*.so可执行文件中的位置无关的代码有关。它要求汇编程序生成代码,将当前指令的地址和指向指令指针的对象的地址之间的差相加或相减 这会在不生成绝对地址的情况下给出对象的地址(通

我正在查看gcc使用-s标志生成的汇编代码。有些语句如下所示

movl    is_leader(%rip), destination

这里,is_leader是C代码中类型为int的全局定义变量。我不明白的是这里的术语是领导者(%rip)。rip不是指令指针吗?我需要知道这个语句是如何用来访问isleader的,它可能与*.so可执行文件中的位置无关的代码有关。

它要求汇编程序生成代码,将当前指令的地址和指向指令指针的对象的地址之间的差相加或相减

这会在不生成绝对地址的情况下给出对象的地址(通常,偏移量适合16或32位,因此生成的代码也更短,因此更快)


这增加了两个项目之间的距离保持不变的约束,因此这只能用于同一可加载对象中的数据;如果不满足该条件,链接器将标记错误。

它要求汇编程序生成代码,将当前指令的地址与指向指令指针的对象的地址之间的差值相加或相减;这给出了对象的地址,而不生成绝对地址(通常,偏移量适合16或32位,因此生成的代码也更短,因此更快)。这是正确的答案——这是指令集的一个功能。