2

我实际上是在学习组装,我选择了 Gas,但问题是:

1) 我只知道 Intel 语法,我在一个页面中看到带有 intel 语法的 Gas 在某些情况下优化得不是很好。这是正确的还是我错的?我在谈论这个网络:

http://wiki.osdev.org/FASM

2)然后我还看到(我不记得页面)气体可以在几种架构中组装的事实也会减慢组装程序的速度。这样对吗?

3) 你推荐我的哪个汇编程序产生高度优化的代码?我在其他问题中看到,在某些情况下,每个汇编程序都可以转换为不同的操作码。我介于 YASM、FASM、GAS 和 NASM 之间,但接受其他建议。众所周知,FASM 非常快......

非常感谢!保持这个伟大的社区!

4

1 回答 1

8

汇编语言的主要观点是您编写的内容直接转换为单独的机器指令。几乎所有的优化都取决于你,程序员。

汇编器只进行极少数的优化,这些优化在任何情况下都是非常微不足道的。第一个是x86处理器有短跳、近跳和远跳。大多数汇编程序可以/将优化跳转以使用从源地址到目标地址的最小形式的跳转指令。即使/如果这不是自动完成的,1)它很少会在速度上产生显着差异(即使在计算单个时钟周期的水平上),以及 2)您通常可以将short或添加near到指令中以获得更小的尺寸(如果这不会“到达”,汇编程序会给你一个警告)。

底线:优化很少是选择一个汇编程序而不是另一个的主要原因。真正的原因是对您关心的指令集和您想要定位的平台的支持。

于 2011-03-08T22:59:24.510 回答