c - 这个汇编语句是什么意思?

标签 c gcc assembly 64-bit x86

我正在查看 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/

相关文章:

c - 我的代码不适用于大输入

c - c中的位操作

c++ - vs2010中的变量排列

c - 在 C 中使用可变长度指针数组时出现 gcc 错误

c - Makefile 在 ubuntu 14.04 上失败 - undefined reference

c++ - 使用 GCC 构建和导入 Boost.python 模块的过程?

c - 预处理器不跳过 asm 指令

我编译的每个可执行文件上的 linux 'cannot execute binary file',chmod 777 没有帮助

ios - 使用 Clang 而不是 gcc 在 iOS 的 OS X 上交叉编译 OpenSSL 时出错

c - 未定义表达式的汇编程序调试