assembly - %rip-relative 寻址何时以及如何解决?
问题描述
采取以下汇编程序:
_start:
mov myvar, %rax
mov myvar(%rip), %rax
mov myvar(%rip), %rax
mov myvar(%rip), %rax
mov myvar(%rip), %rax
运行时产生以下内容gdb
:
!0x00000000004000b0 ? mov 0x600107,%rax
0x00000000004000b8 ? mov 0x200048(%rip),%rax # 0x600107
0x00000000004000bf ? mov 0x200041(%rip),%rax # 0x600107
0x00000000004000c6 ? mov 0x20003a(%rip),%rax # 0x600107
0x00000000004000cd ? mov 0x200033(%rip),%rax # 0x600107
当然,所有myvar
引用都解析为0x600107
. -relative 项目在哪里(或者何时是一个更好的问题)%rip
被解析为实际地址?这个过程在高层次上是如何运作的?
解决方案
推荐阅读
- reactjs - 在 React-native 中应用 Redux-saga 时的奇怪行为
- node.js - PUT 请求不运行更新
- python - 为什么我的代码运行但没有实际执行其分配的功能
- java - Java itextpdf文件输出流实际上并未关闭
- gcc - 在 64 位 ubuntu linux 中编译期间使用 -m32 选项时 sem_wait 卡住
- ejb - Netbeans 中的 EJB 注入
- google-sheets - 在受保护的 Google 工作表中添加/删除行
- c++ - VS2019 typedef在包含时发生变化
- html - 输入值未使用 POST 方法发送到 URL - HTML
- nestjs - 如何在typeorm中合并两个表?