ARM汇编

一。为什么要学习ARM汇编?
1.bootloader初始化代码汇编效率高
2.Linux内核初始化汇编效率高
3.汇编和C语言混合编程
二。ARM汇编分类
1.ARM标准汇编
适合windows平台,如ADS中使用
2.GNU汇编
适合Linux平台,使用GNU交叉编译器
三。汇编程序框架
入口:_start:
标示:.global _start(方便外部文件引用)
代码段:.section .text
未初始化数据:.section .bss
初始化数据:.section .data
四。ARM指令分类学习
推荐资料:ARM汇编手册
1.算术和逻辑指令
1.1 MOV:传送
作用:把一个数传送到另一个寄存器中
1.2 MVN:传送取反的值
作用:把一个数取反传送到另一个寄存器中
1.3 SUB:减法,两个数相减,差值放到另一个寄存器中(注意:减数不能是立即数)
1.4 ADD:加法
1.5 AND:逻辑与操作
1.6 BIC:位清除
根据掩码的位为1就把对应的位清除为0
2.比较指令
2.1 CMP:比较结果三种:大于,小于,等于。结果影响状态寄存器CPRS的 N位和Z位
2.2 TST:测试位,按位与,影响Z位
3.跳转指令
3.1 B:有条件看条件,没条件就无条件跳转
3.2 BL:调用函数,跳转之前,把下一条指令的地址保存在LR寄存器,以便完成跳转调用函数之后回到跳转的位置继续执行
4.移位指令
4.1 LSL:逻辑或算术左移
4.2 ROR:循环右移
5.程序状态字访问指令
注意:状态寄存器不能用通用的指令进行操作,需要用专用的指令搬移到通用寄存器里进行修改再用专用的指令搬回状态寄存器
专用指令:MSR,MRS
5.1 MSR:通用寄存器搬移到状态寄存器
5.2 MRS:状态寄存器搬移到通用寄存器
以上都是CPU核寄存器
下面是存储器寄存器
6.存储器访问指令
6.1 LDR:内存的值保存到寄存器
6.2 STR:寄存器的值保存到内存

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值