【发布时间】:2011-01-29 22:53:05
【问题描述】:
我正在 JIT 编译器中动态生成一些操作码,我正在寻找操作码对齐的指南。
1) 我读过 cmets 通过在调用后添加 nop 来简要“推荐”对齐
2) 我还阅读了有关使用 nop 优化序列以实现并行性的信息。
3) 我读到操作对齐对“缓存”性能有好处
通常这些 cmets 不提供任何支持性参考。阅读博客或评论说“这样做是个好主意”是一回事,但实际编写实现特定操作序列并在线实现大多数材料(尤其是博客)的编译器是另一回事用于实际应用。所以我相信自己会发现事情(反汇编等,看看现实世界的应用程序做了什么)。这是我需要一些外部信息的一种情况。
我注意到编译器通常会在之前的任何指令序列之后立即启动奇数字节指令。因此,在大多数情况下,编译器并没有特别注意。我在这里或那里看到“nop”,但通常似乎很少使用 nop,如果有的话。操作码对齐有多重要?您能否为我可以实际用于实施的案例提供参考?谢谢。
【问题讨论】:
-
作为一个独立的答案,我接受了 DigitalRoss',但两者都很好。 Martin 提供的链接被证明是最有用的(一个真正的金矿),并且回答了我今晚的很多后续问题。谢谢你们。
标签: assembly x86 x86-64 memory-alignment micro-optimization