先来看看关于标号的内容。
这里的局部标号是需要注意的。
全局标号,以及注释 可以不看。
来看一个例子;
这里的 BSYM 我不知道是什么意思。
在来看看关于伪操作的内容, 一般是以 . 开头的。
这是基本的一些操作。
然后是举例:
这里的.word 代表的是 4个字节。
val: .word 0x11223344
mov r1,#val ;将值0x11223344设置到寄存器r1中
这里的space 不太明白是什么意思。
label: .space size,expr ;expr可以是4字节以内的浮点数
a: space 8, 0x1
这个例子中 space 8 ,0x1 代表的是 填充8个字节,每个字节都是用0x1 来填充。
这里的重复 不太明白是什么意思。
.rept cnt ;cnt是重复次数
.endr
这里的if 类似于 C语言
然后是关于 自定义段的操作, 这是比较重要的。
段分为:
代码段 .text
初始化数据段:.data
未初始化数据段:.bss
只读段: rodata, 代表着 字符串以及 define 定义的变量
heap 段, stack 段, 常量段。
这些都是指的名字。
flags 代表的是 读写的约束。
定义一个代码段: 这里的x 不知道是什么意思。
.section .text , "x"
.global add
add:
add r0, r0,r1
mov pc,lr
然后是自己定义一个段。
.section .mysection
.align 2
strtemp:
.ascii "hello world"
标号是不带 . 的, 一般伪指令 是带 . 的。