共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【S32K3XX】LPSPI参数配置说明被打赏¥21元 | |
| 在WT9932C61-TINY上实现超声波测距被打赏¥22元 | |
| 基于WT9932C61-TINY的环境构建及OLED屏驱动测试被打赏¥20元 | |
| 【S32K3XX】Core-to-Core 中断使用被打赏¥21元 | |
| 「AI编程记录--含源码」用一晚上的时间写一个esp32的示波器被打赏¥19元 | |
| STM32C0116DK开发探索记(3)被打赏¥30元 | |
| STM32C0116DK开发探索记(2)被打赏¥24元 | |
| STM32C0116DK开发探索记(1)被打赏¥29元 | |
| 谨防极海G32M3101电机评估板易跌落的陷阱被打赏¥24元 | |
| 【全网首拆】M5STACK ATOM系列开发板拆解 / AtomS3R-CAM摄像头更换方法(提高10倍像素)被打赏¥26元 | |
我要赚赏金
