Met*_*est 2 c 64-bit x86 assembly gcc
我正在看gcc通过使用-s标志生成的汇编代码。一些语句如下所示。
movl is_leader(%rip), destination
Run Code Online (Sandbox Code Playgroud)
在此,is_leader是C代码中int类型的全局定义变量。我不明白的是这里的术语is_leader(%rip)。不撕裂指令指针吗?我需要知道该语句如何用于访问is_leader。
它要求汇编器生成代码,该代码添加或减去当前指令的地址与指令指针的对象的地址之间的差。
这样就给出了对象的地址,而没有生成绝对地址(通常,偏移量适合16或32位,因此生成的代码也较短,因此速度更快)。
这就增加了两个项目之间的距离保持不变的约束,因此只能用于同一可加载对象中的数据。如果不满足该条件,链接器将标记一个错误。
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |