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/8121871/

相关文章:

assembly - 在 ml64 中的 xmm 和通用寄存器之间移动四字?

GCC 扩展 Asm - 了解 clobbers 和临时寄存器用法

c - 动态内存分配以反向打印 float 数组

c - 如何从用户那里获取包含由空格分隔的字符串和整数的输入?

c++ - 取消引用类型双关指针将打破严格的别名规则 : array of bytes to a number

C & 低级信号量实现

directory - 如何使用 qsort 根据字节对包含路径名/文件的字符进行排序?

C 令人困惑的指针算术

c - Eclipse CDT 中是否有配置类型的预定义宏?

c - 使用带有 uint64_t 类型的内置溢出函数