第58天:ARM学习笔记

原生程序的生成过程:预处理、编译、汇编、链接

ARM处理器支持7种运行模式:用户模式、快速中断模式、外部中断模式、管理模式、数据访问终止模式、系统模式、未定义指令中止模式。

工作状态:ARM状态和Thumb状态  

两种状态对应为:(Thumb状态在前。)

R0-R7相同、CPSR相同。

FP 对应 R11

IP 对应 R12

SP 对应 R13

LR 对应 R14

PC 对应 R15

寻址方式:

1.立即寻址

MOV R0,#1234

2.寄存器寻址

MOV R0,R1

3.寄存器移位寻址

移位指令LSL、LSR、ASR、ROR、RRX

MOV R0,R1,LSL #2          R0=R1<<2

4.寄存器间接寻址

LDR R0,[R1]   取地址中的数据赋值

5.基址寻址

LDR R0,[R1,#-4]    取R1-4地址中的数据赋值

6.多寄存器寻址

LDMIA R0,{R1,R2,R3,R4}

R1=[R0],R2=[R0+4],R3=[R0+8],R4=[R0+12]

7.堆栈寻址

STMFD SP!,{R1-R7,LR}   入栈

8.块拷贝寻址

LDMIA R0!,{R1-R3}     读取R0的存储单元到R1-R3

9.相对寻址

跳转到标号。

指令格式

S指定是否影响CPSR寄存器(状态标志寄存器)的值。ADDS、SUBS

.W和.N是指令宽度说明符。

Rd是目的寄存器,Rn是第一个操作数寄存器,operand2为第二个操作数。

跳转指令:

B跳转指令、BL带链接的跳转指令、BX带状态切换的跳转指令、BLX  BL和BX的结合版。

存储器访问:

cond为执行条件。LDRD 一次加载双字的数据。

LDMIA R0!,{R1-R3}    依次加载R0指向的存储单元的数据到R1、R2、R3寄存器。

指令好多,不贴了,用到了再查吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值