LA32R汇编编程简介
常用汇编器指示(Assembler Directives)
符号(Symbol)定义相关的汇编器指示
有两个概念间的关系先提示一下:标号(Label)是一种符号(Symbol)。
设置符号类型
.type SSS, @function 表示符号SSS的类型为函数。
.type SSS, @object 表示符号SSS的类型为变量。
设置符号大小
.size VVV, 4 表示变量VVV的大小为4字节。
.size FFF, .-FFF 表示函数FFF的大小为当前位置减去FFF起始位置(即标号FFF所在位置)。
指定符号的地址对齐方式
用.align N来指示接下来的数据在目标文件中的地址对齐到2的N次方。例如,
指示将main函数的入口地址对齐到2的4次方即16字节。
指定符号的作用域
当不加任何指定符号作用域的编译提示时,符号的作用域仅限当前汇编文件内。.globl SSS 用于指定符号SSS为全局可见。
指定数据类型
| 写法 | 类型 |
|---|---|
.byte <value>, <value>, ... |
字节整数,可定义多个一个字节的数据 |
.word <value>, <value>, ... |
字整数,可定义多个两个字节的数据 |
.int <value>, <value>, ... |
整数,可定义多个四个字节的数据 |
.rept <repeat time><repeat content>.endr |
定义重复的内容,地址连续 |
.ascii "<string value>" |
字符串,定义以非'\0'结尾的字符串 |
.asciz "<string value>".string "<string value>" |
字符串,定义以'\0'结尾的字符串 |
以下3种方式都能定义"Hello World!"字符串,它们是等价的。
指定符号数据存放段
.text 指定接下来的内容要放在目标文件的代码段。.data 指定接下来的内容要放在目标文件的数据段。.bss 指定接下来的符号要放在目标文件的BSS段。.rodata 指定接下来的内容要放在目标文件的只读数据段。
以上只是一些常用的汇编器提示,如果想了解更多,可以查阅汇编器手册的第7章。