本帖最后由 小飞飞 于 2020-8-21 02:09 编辑
.type伪操作用于定义符号的类型。譬如“.type symbol,@function”即将名为symbol的符号定义为一个函数(function)。
.align伪操作用于将当前PC地址推进到“2的integer次方个字节”对齐的位置。譬如“.align 3”即表示将当前PC地址推进到8个字节对齐的位置处。
.balign伪操作用于将当前PC地址推进到“integer个字节”对齐的位置。
.zero伪操作将从当前PC地址处开始分配integer个字节空间并且用0值填充。譬如“.zero 3”即表示分配三个字节的0值。
- .byte expression [, expression]*
.byte伪操作将从当前PC地址处开始分配若干个字节(byte)的空间,每个字节填充的值由分号分隔开的expression指定。
- .2byte expression [, expression]*
.2byte伪操作将从当前PC地址处开始分配若干个双字节(2 bytes)的空间,每个双字节填充的值由分号分隔开的expression指定。空间分配的地址可以与双字节非对齐。
- .4byte expression [, expression]*
.4byte伪操作将从当前PC地址处开始分配若干个四字节(4 bytes)的空间,每个四字节填充的值由分号分隔开的expression指定。空间分配的地址可以与四字节非对齐。
- .8byte expression [, expression]*
.8byte伪操作将从当前PC地址处开始分配若干个八字节(8 bytes)的空间,每个八字节填充的值由分号分隔开的expression指定。空间分配的地址可以与八字节非对齐。
- .half expression [, expression]*
.half伪操作将从当前PC地址处开始分配若干个半字(half-word)的空间,每个半字填充的值由分号分隔开的expression指定。空间分配的地址一定与半字对齐(half-word aligned)。
- .word expression [, expression]*
.word伪操作将从当前PC地址处开始分配若干个字(word)的空间,每个字填充的值由分号分隔开的expression指定。空间分配的地址一定与字对齐(word aligned)。
- .dword expression [, expression]*
.dword伪操作将从当前PC地址处开始分配若干个双字(double-word)的空间,每个双字填充的值由分号分隔开的expression指定。空间分配的地址一定与双字对齐(double-word aligned)。
.string伪操作将从当前PC地址处开始分配若干个字节空间用于存放“string”字符串。字节的个数取决于字符串的长度。
- .comm或者.common name, length
.comm和.common伪操作用于声明一个名为name的未初始化存储区间,区间大小为length个字节。由于是未初始化存储区间,在链接阶段会将其链接到.bss段中。有关链接后ELF文件常见段.text、.data、.rodata、.bss请参见本号之前发表文章《编译过程简介》节了解更多信息。
- .option {rvc,norvc,push,pop}
.option伪操作用于设定某些架构特定的选项,使得汇编器能够识别此选项并按照选项的定义采取相应的行为。 rvc、norvc是RISC-V架构特有的选项,用于控制是否生成16位宽的压缩指令:
push、pop用于临时性的保存或者恢复.option伪操作指定的选项:
|