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