-
" @ "汇编指令中的注释符号
" # " 表示后面附带的是立即数
" : "以冒号结尾的指令是标号,标记指令的被分配的地址,类似与c中定义的变量,通过变量代替地址
" . "表示当前指令地址 例如,汇编中死循环的实现 b . -
伪指令前面通常都带一个点,以显示出于指令的不同
.globe _start给start外部链接属性
.section .text 指定当前代码段
.ascii/.byte/.short/.long/.word
.quad/.float/ 在存储器中分配对应类型大小的字节,初始化制定的变量
.align 对齐平方后方为对齐位数
如.align 4 16字节对齐
.balignl 对齐并填充,填充的为后面的数
如.blaignl 16 0xFF 16字节对齐 b表示按位填充,l表示按4字节填充
.equ 类比于c语言宏定义,起相等替换作用.end 标识文件结束
.include 同include
.code32/.arm arm指令
.code16/.thumb thumb指令ldr 大范围的地址加载指令
ldr既有指令也有伪指令,区别在于使用ldr指令有一些需要注意的点,如合法立即数非法立即数,而使用伪指令则不存在这种问题,因为编译器会将你输入立即数的转换成为合法的方式加载到寄存器
//伪指令与指令加载立即数的方式
ldr r0,#0x1FF
ldr r0, =0x1f @涉及到 合法/非法立即数和内存池
adr 小范围的地址加载指令
adrl 中等范围的地址加