X86 .align指令的作用是什么?

X86 .align指令的作用是什么?,x86,X86,我正在学习x86,并试图弄清楚.align指令的作用以及它如何发挥作用 报告说: .align指令使生成的下一个数据对齐 模整数字节。整数必须是正整数表达式 必须是2的幂。如果指定,pad是一个整字节值 用于填充。文本部分的pad默认值为 0x90(nop);对于其他部分,pad的默认值为零(0) 但我不知道这是什么意思。你能告诉我在哪里可以读到更多关于它的内容,或者用一个例子简单地解释一下吗?理解它的作用的关键是理解它为什么在那里 所有计算机都有一个称为字号的自然边界。此边界通常为4字节或8字

我正在学习x86,并试图弄清楚.align指令的作用以及它如何发挥作用

报告说:

.align指令使生成的下一个数据对齐 模整数字节。整数必须是正整数表达式 必须是2的幂。如果指定,pad是一个整字节值 用于填充。文本部分的pad默认值为 0x90(nop);对于其他部分,pad的默认值为零(0)


但我不知道这是什么意思。你能告诉我在哪里可以读到更多关于它的内容,或者用一个例子简单地解释一下吗?

理解它的作用的关键是理解它为什么在那里

所有计算机都有一个称为字号的自然边界。此边界通常为4字节或8字节

如果4和8字节值位于这些边界上,CPU可以更快地从内存加载和存储,而不会浪费缓存空间。某些类型的CPU根本无法获取未对齐的值

因此,汇编器中必须有一种机制可以跳转到下一个边界,以便标签和存储分配指令可以从一个更有效的地址开始

对于指令,奇数边界在大多数计算机上都有效,但它们仍然会影响性能并浪费缓存空间

   .string "ab\0"
; this next address is 3
vs

    .string "ab\0"
    .align 4 # sometimes interpreted as 2**n, so, .align 2
; this next address is 4, and would still be 4 if the string was just "a"