我正在查看 gcc 使用 -s 标志生成的汇编代码。一些语句如下所示。
movl is_leader(%rip), destination
这里,is_leader是C代码中全局定义的int类型的变量。我不明白的是这里的术语is_leader(%rip)。 rip 不是指令指针吗?我需要知道如何使用此语句来访问 is_leader。
最佳答案
它要求汇编程序生成代码,将当前指令的地址与对象地址之间的差值加或减到指令指针。
这给出了对象的地址而不生成绝对地址(通常,偏移量适合 16 或 32 位,因此生成的代码也更短,因此更快)。
这增加了两个项目之间的距离保持不变的约束,因此这只能用于同一可加载对象中的数据;如果不满足该条件,链接器将标记错误。
关于c - 这个汇编语句是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31515804/