湖北省建设信息港网站,东莞网站建设公司口碑排名,购物网站为什么做移动端,龙岗建设招标局网站文章目录 LDR 指令LDR伪指令LDR伪指令与MOV区别 上篇文章#xff1a;ARM 常见汇编指令学习 6 - bic(位清除), orr(位或), eor(异或) 下篇文章#xff1a;ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍 LDR指令 与 LDR伪指令 两者虽然名字相同但是作用却不相同#x… 文章目录 LDR 指令LDR伪指令LDR伪指令与MOV区别 上篇文章ARM 常见汇编指令学习 6 - bic(位清除), orr(位或), eor(异或) 下篇文章ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍 LDR指令 与 LDR伪指令 两者虽然名字相同但是作用却不相同区分两者的方法就是看第二个参数如果有等号就是LDR伪指令。
LDR 指令
ldr r0, 0x80000000上面语句的作用是将地址0x80000000中的内容赋值给 r0寄存器需要注意的是不能使用mov指令来做这个事情因为mov指令只能将数据在寄存器之间移动或者把立即数移动到寄存器中
mov r1, #0
mov r0 r1LDR伪指令
ldr x7, 0x18bc0100
mov x8, xzr
ldr w9, 0xffffff00
ldr w8, [x7, #0x3c]
and w8, w8, w9
str w8, [x7, #0x3c]
dsb sy
isb如上面arm汇编代码是将地址 0x18bc010写入到 x7寄存器中将数据0xffffff00 写入到 w9(x9 32bit形式)中。
LDR伪指令与MOV区别
mov 指令限制了立即数的长度为8位立即数范围是0-255而ldr伪指令没有这个限制如果使用ldr伪指令后面的立即数没有超过8位那么汇编将会使用mov指令去替换LDR伪指令。
mov 后面的立即数可以进行位移操作位移的位数范围是0-30步长为2所以实际上可以表示的立即数范围更大。例如
MOV R0, #130可以将R0寄存器的值设置为0x40000000。
上篇文章ARM 常见汇编指令学习 6 - bic(位清除), orr(位或), eor(异或) 下篇文章ARM 常见汇编指令学习 8 - dsb sy 指令及 dsb 参数介绍