注:以下学习内容学习于韦东山老师arm裸机第一期教程
一.常用arm汇编指令
1.1 ldr,读地址指令
ldr R0,[R1]
假设R1的值是x,那么这条语句:读地址x上的数据(4字节),保存到R0中
1.2 str,写地址指令
str R0,[R1]
假设R1的值是x,把R0的值写到地址x(4字节)
1.3 mov
mov R0,R1
把R1的值赋给R0,R0 = R1
mov R0,#0x100(#后面表示是一个立即数) R0 = 0x100
1.4 ldr ,伪指令
ldr R0, = 0x12345678
R0 = 0x12345678
这是一条伪指令,它会被拆分为几条真正的ARM指令
因为如果写入 mov R0,#0x12345678 是一条错误指令
因为32位的arm指令,肯定会有一些字节表示mov指令本身,有一些位表示R0,剩下的不足32位,不能够保存任意的值,只能够保存简单值,也被称为立即数。 (0x100就是简单值)
因此引入伪指令ldr R0, = 0x12345678(注意有个等号,与读内存时不同),这条指令会被拆分成真正的arm指令。
例如下面的代码