.align 伪操作

用途

将当前位置计数器前进至达到 数字 参数指定的边界为止。

语法

.align Number [, Number2]

描述

. 对齐 伪操作通常用于包含数据的控制部分 (csect) 或包含前缀指示信息的 csect 中。

Number 参数指定位置计数器的所需对齐的对数底数 2 (二进制对数)。 例如,如果指定 2 ,那么 .align 伪操作请求字对齐,如果指定 3 ,那么 .align 伪操作请求双字对齐。

如果指定了 Number2 参数,那么仅当位置在所需对齐边界的 Number2 字节内时,才会进行对齐。 这在前缀指令之前最有用,以防止指令跨越 64 字节边界。

如果未指定 Number2 参数,那么汇编程序将通过插入字节来对齐位置计数器。 在大多数情况下,会插入 0s ,但如果当前 csect 具有存储映射类 "PR" 或 "GL" ,那么会插入无操作指令。 有关存储映射类的更多信息,请参阅 .csect pseudo-op。

参数

描述
编号 0 求值为 0 到 12 (包括 0 和 12) 之间的整数值的绝对表达式。 该值指示所需对齐的日志底数 2。 例如, 8 (双字) 的对齐将用整数值 3 表示; 4096 (一页) 的对齐将用整数值 12 表示。
Number2 指定求值为数字的绝对表达式。 仅当位置计数器比 Number2 字节更接近期望的对齐边界时,才会进行对齐。 如果 Number2 参数指定的值大于 2Number,那么将忽略 Number2 参数。

示例

以下示例说明了 . 对齐 伪操作的用法:
  1. 
                    .csect   progdata[RW]
                    .byte    1
                             # Location counter now at odd number
                    .align   1
                             # Location counter is now at the next
                             # halfword boundary.
                    .byte    3,4
                    .
                    .
                    .
                    .align   2       # Insure that the label cont
                                     # and the .long pseudo-op are
                                     # aligned on a full word
                                     # boundary.
            cont:   .long    5004381
    
  2. 
                    .csect [PR]
                    …
                    .align 6,8	# Align the program counter if the 
                                     # current location counter is less 
                                     # than 8 bytes from a 64-bit byte  
                                     # boundary
                    plw r3,0x10000(r4)	# Load a word into r3