问题描述
我正在编写一个汇编程序。我一直认为汇编中的某条汇编指令和相应的指令是一一对应的,所以我觉得写一个还是很容易的。但在实际阅读英特尔 64 位软件开发手册后,我现在意识到像
这样的命令mov %rdx,%rbx
对此有一定的矛盾。它可以翻译成 48 89 D3
对应于
REX.W + 89 /r - MOV r64,r/m64
来自 Intel 64 Software Dev Manual 的第 1235 页。
但也可以翻译成 48 8B DA
(REX.W + 8B /r - MOV r/m64,r64)。
0: 48 89 d3 mov %rdx,%rbx
3: 48 8b da mov %rdx,%rbx
通过阅读手册,很明显为什么会存在这种矛盾。像这样的矛盾心理在少数情况下是存在的。
我在某些情况下测试了代码,结果完全一样。
使用一个优于另一个(gnu 汇编程序在我查看的所有情况下都使用 48 89 D3
)还是我应该随机选择其中一个?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)