共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 一种有效完成脚本程序测试的方法被打赏¥28元 | |
| WorkBuddy搭配SolidCraft给开发板做两件式外壳被打赏¥33元 | |
| 开箱一块k230被打赏¥33元 | |
| 【瑞萨RA8D1测评】RA8D1+lwIP网络验证与TCPOTA的实验记录被打赏¥33元 | |
| 28BYJ-48机械臂实现人脸跟随被打赏¥24元 | |
| 基于RK3506B的片温识读功能的实现被打赏¥25元 | |
| 【瑞萨RA8D1测评】基于FreeRTOS的lvgl移植教程被打赏¥29元 | |
| 电子价签墨水屏开发被打赏¥35元 | |
| 【Ozone】RTT 打印终端使用被打赏¥29元 | |
| BMS保护板绝缘检测功能-不平衡电桥技术绝缘电阻检测设计与实现被打赏¥34元 | |
我要赚赏金
