我实际上正在学习汇编,我选择了 Gas,但问题是:
1)我只知道Intel语法,我在一个页面中看到带有Intel语法的Gas在某些情况下没有得到很好的优化。这是正确的还是错误的?我正在谈论这个网站:
2)然后我还看到(我不记得页面了)事实是gas可以在多种架构中组装,这也会减慢组装程序的速度。是吗?
3)您推荐我使用哪种汇编器来生成高度优化的代码?我在其他问题中看到,在某些情况下,每个汇编器都可以转换为不同的操作码。我介于 YASM、FASM、GAS 和 NASM 之间,但其他建议也被接受。 FASM 众所周知速度非常快...
非常感谢!保持这个伟大的社区!
汇编语言的要点是您编写的内容直接翻译为单独的机器指令。几乎所有优化都取决于程序员。
汇编器只进行极少量的优化,这些优化在任何情况下都是相当微不足道的。第一个是 x86 处理器有短跳转、近跳转和远跳转。大多数汇编器可以/将优化跳转以使用从源地址到目标地址的最小形式的跳转指令。即使当/如果这不是自动完成的,1)它很少在速度上产生显着差异(即使在计算单个时钟周期的水平上),2)您通常可以将
short
或 near
添加到指令中以获得更小的尺寸(如果无法“达到”,汇编器会向您发出警告)。
底线:优化很少成为选择一种汇编器而不是另一种汇编器的理由。真正的原因是支持您关心的指令集和您想要的目标平台。