gcc - 为什么 gcc 在一条指令中发出 0x0(%r13) 而在另一条指令中发出 (%r13)?
问题描述
我正在调试一段具有以下指令的代码。
mov %esi,0x0(%r13)
然后在另一个地方,我看到这样的指令:
mov %esi,(%r13)
我认为前者将esi
寄存器的内容移动到由r13 + 0x0
. 按照这种逻辑,后者也应该产生相同的效果。
这些指令之间有什么区别吗?
为什么 gcc 写相同的东西不同?
编辑:反汇编是使用生成的objdump -S
。
解决方案
推荐阅读
- node.js - 在构建 React.js 上设置环境变量
- dialogflow-es - 无法让丰富的按钮在对话流上工作。它返回空响应
- reactjs - 如何在useEffect-React加载的组件中渲染内容
- docker - 将内容从不同的 docker 镜像复制到在 k8s 作业中运行的容器
- kotlin - 如何在 Kotlin 中以位、最小值和最大值输出 Int 大小?
- c# - 如何在c#中使用``
- php - 无法退还 EasyPost 测试货件
- optimization - 使用 PuLP 理解价格优化并制定问题
- python - gunicorn 无法启动烧瓶服务器:ModuleNotFoundError: No module named 'requests'
- anaconda - Anaconda Navigator GUI 中的 JupyterLab 未更新