align 地址对齐的伪指令,用来指定符号的对齐方式。.align的作用范围只限于紧跟它的那条指令或者数据,而接下来的指令或者数据的地址由上一条指令的地址和其长度决定。
不同平台的align 指令 有两种对齐方式
第一种:
a29k,hppa, m68k, m88k, w65, sparc, and Hitachi SH, and i386 的elf 格式的目标文件,直接按字节数对齐。如下:
.align 4 //按 4 个字节的倍数对齐下一个符号,空隙默认用0 来填充
.align 4,0x90 //以4的倍数对齐地址,空隙用0x90 也就是nop 指令来填充
第二种:
For other systems, including the i386 using a.out format, and the arm and strongarm, 是按2的指数bit来对齐
.align 5 //就是2的5次方对齐,也就是4字节对齐