赞
踩
ARM所有的运算指令只能基于寄存器,所以,要先从内存Load要运算的数据到寄存器,运算完成后,再将寄存器的结果Store到内存,这两个操作相应的指令如下:
还有Mov指令,但是并不能从内存读写数据,只能是直接的一个数(立即数),或者寄存器:
指令不难理解,麻烦的是[addr],各种姿势,婉转百变,今天抽时间解锁一下
首先[addr]里面一定有一个寄存器,这个寄存器的值是一个内存地址,称之为Base Register,可以理解为c语言里面的一个ptr。Base Register在寻址之前或者之后都可以进行一些运算操作,操作结果可以更新到这个Base Register,也可以不更新到Base Register。具体来说,有下面几种:
最简形式:Base Register模式
可类比于:*(ptr) <-> value
下面的x1不会变
ldr x0, [x1] /* [x1] ->
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。