共1条
1/1 1 跳转至页
ARM指令集学习总结
ARM指令集比较简单,本文介绍ARM指令集中需要注意和不易理解的地方。
一、ARM指令集是32位的,程序的启动都是从ARM指令集开始,包括所有异常中断都是自动转化为ARM状态,并且所有的指令都可以是有条件执行的。
二、ARM指令集是Load/Store型的,只能通过Load/Store指令实现对系统存储器的访问,而其他的指令都是基于处理器内部的寄存器操作完成的,这和INTEL汇编是不同的,初学者很不易理解。
三、指令的后缀:"S" 可选后缀,若指定S,则根据指令执行的结果更新CPSR中的条件码。很多初学着不知道怎么更新,若这条指令执行完以后,对ARM程序状态寄存器的条件码标志(N,Z,C,V)的影响。
"! " 表示在完成数据操作以后,将更新基址寄存器,并且不消耗额外的时间。
如:LDR R0, [R1, #4] 他相当于 R0 R1,操作完毕后,R1 = R1+4。不需要"!"号。
八、堆栈寻址
一定要注意:堆栈操作总是要指定自动变址的,否则会覆盖以前保存的内容。
九、乘法指令
1、乘法指令不支持第二操作数为立即数。
2、结果寄存器不能同时作为第一源寄存器。
32位:MUL Rd,Rm,Rs
MUL Rd,Rm,Rs //Rd和Rm不能为同一寄存器.。
64位:MUL RdHi,RdLo,Rm,Rs //RdHi、RdLo和Rm不能为同一寄存器,RdHi和RdLo不能为同一寄存器。
十、跳转指令
1、BL和BLX跳转是硬件自动将下一条指令地址保存到LR(R14)中,不需要自己写指令。
2、当指令跳转到32MB地址空间以外时,将产生不可预料的结果。
ARM的指令集比较简单,肯定还有其他需要注意的地方,欢迎大家们积极参与补充。
关键词: 指令 学习 总结
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |