【发布时间】:2016-09-07 15:26:48
【问题描述】:
汇编编译器如何编译如下指令:
mov eax, [bx+si]
或
mov eax, [ebp + 4*eax - 40]
免责声明:我对这些东西还是很陌生。
根据我目前的知识水平,我无法理解。我已经用尽了谷歌,但找不到关于它如何编译的解释;只是关于它的作用。因为根据我目前的理解,这不可能是预先确定的计算。
这是否会生成一个特定的、不同的操作码,然后传入各个部分,CPU 会自动为它处理?如果是这样,我在找到的所有 x86 参考资料中都错过了这一点;或者我可能不是在寻找正确的东西或我期望参考文献显示的内容。
或者它是在编译时注入一堆指令来在指令本身之前进行数学运算?虽然,通过阅读使用这种技术执行某些乘法运算比调用 MUL 更快的各种资源(类似于mov eax, [eax*4 + eax] 的东西(如果我记错了,请原谅我)相当于乘以 5,但更快)。这让我相信这不可能是这样处理的。
我也没有找到关于 x86 汇编编译过程的好的指南/阅读。只有在其中编程的资源。因此,如果有人知道任何好的资源,请告诉我。 :)
谢谢!
【问题讨论】:
-
是的,不同的寻址模式有不同的操作码/指令。
标签: assembly compilation x86