网站建设运营合作合同,wordpress 鼠标悬停,青海seo技术培训,平面设计可以自学吗多寄存器访问指令
ldr/str每周期只能访问4字节内存#xff0c;如果需要批量读取、写入内存的话太慢#xff0c;解决方案就是ldm/stm#xff0c;ldm(load register multiple)#xff0c;stm(store register multiple) 举例#xff1a;
stmia sp, {r0 - r12}
将r0存入sp指…
多寄存器访问指令
ldr/str每周期只能访问4字节内存如果需要批量读取、写入内存的话太慢解决方案就是ldm/stmldm(load register multiple)stm(store register multiple) 举例
stmia sp, {r0 - r12}
将r0存入sp指向的内存处假设为0x30001000然后地址4即指向0x30001004将r1存入该地址然后地址再4指向0x30001008将r2存入该地址······直到r12内容放入0x3001030指令完成。
一个访存周期同时完成13个寄存器的读写
18种后缀stmia stmfd
iaincrement after 先传输再地址4 相当于空递增堆栈 ea
ibincrement before 先地址4再传输 相当于满递增堆栈 fa
dadecrement after 先传输再地址-4 相当于空递减堆栈 ed
dbdecrement before 先地址-4再传输 相当于满递减堆栈 fd
fdfull descending 满递减堆栈
edempty descending 空递减堆栈
fafull ascending 满递增堆栈
eaempty ascending 空递增堆栈 四种栈
空栈栈指针指向空位每次存入时可以直接存入然后栈指针移动一格而取出时需要先移动一格才能取出
满栈栈指针指向栈中最后一格数据每次存入时需要先移动栈指针一格再存入取出时可以直接取出然后再移动栈指针
增栈栈指针移动时向地址增加的方向移动的栈
减栈栈指针移动时向地址减小的方向移动的栈
!的作用
ldmia r0, {r2 - r3}
ldmia r0, {r2 - r3} !的作用就是r0的值在ldm过程中发生的增加或者减少最后写回到r0去也就是说ldm时的感叹号会改变r0的值。
^的作用
ldmfd sp!, {r0 - r6, pc}
ldmfd sp!, {r0 - r6, pc}^ ^的作用在目标寄存器中有pc时会同时将spsr写入到cpsr一般用于从异常模式返回。
谨记操作栈时使用相同的后缀就不会出错不管是满栈还是空栈、增栈还是减栈