Gnu 汇编器 (GAS) 优化

问题描述 投票:0回答:1

我实际上正在学习汇编,我选择了 Gas,但问题是:

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

http://wiki.osdev.org/FASM

2)然后我还看到(我不记得页面了)事实是gas可以在多种架构中组装,这也会减慢组装程序的速度。是吗?

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

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

optimization assembly gnu-assembler fasm
1个回答
9
投票

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

汇编器只进行极少量的优化,这些优化在任何情况下都是相当微不足道的。第一个是 x86 处理器有短跳转、近跳转和远跳转。大多数汇编器可以/将优化跳转以使用从源地址到目标地址的最小形式的跳转指令。即使当/如果这不是自动完成的,1)它很少在速度上产生显着差异(即使在计算单个时钟周期的水平上),2)您通常可以将

short
near
添加到指令中以获得更小的尺寸(如果无法“达到”,汇编器会向您发出警告)。

底线:优化很少成为选择一种汇编器而不是另一种汇编器的理由。真正的原因是支持您关心的指令集和您想要的目标平台。

© www.soinside.com 2019 - 2024. All rights reserved.