对另一个指令紧跟一个对齐指令有什么影响吗?

时间:2014-03-18 20:09:41

标签: assembly alignment nasm

它是如何运作的?最后一个align是否覆盖了之前使其效果为null的行为,或者在一起使用时是否会执行某些操作?我从大型汇编源代码中找到了这个,我问这个是因为我不认为这只是一个错字。

align 64
align 4

1 个答案:

答案 0 :(得分:1)

align插入NOP以使当前节偏移量达到指定值的倍数。 (您还可以显式指定要插入的NOP以外的值,例如NULL填充)。它还隐式调用SECTALIGN来设置节的对齐属性。

请参阅NASM manual section 4.12.12

所以这是一个错字 - 第二个align将不执行任何操作,因为第一个已填充到64字节对齐。隐式SECTALIGN也没有效果,因为手册指定了对齐属性只能增加,永不减少。