ARM指令(阅读笔记)

ARM寄存器基础笔记

 

1.2.2 寄存器组织

 

 

 

 

R8~R12 也是存放临时变量

R13/SP 栈指针寄存器,记录栈顶地址 (地址指向那,栈就在那)

R14/LR 链接返回寄存器,保存程序返回地址,如函数调用返回

CASE:BL  fun 返回地址保存在R14寄存器里

R15/pC 保存CPU下一步执行的地址里面的指令

 

 

 

小知识

 

 

 

 

 

 

CPRS寄存器-当前程序状态寄存器

1,图解一,前5位记录当前CPU在什么模式(7种模式)

 

 

2,图解二V, CZN

 

CPSR工作模式由状态寄存器的最低5位决定

图解:最低5

 

 

 

 

熟悉问题

共37个寄存器,这些寄存器分别是干什么的?

 

 

1.2.3

大小端存储-简称高存稿,低存低

 

 

网络字节序-使用大端存储

 

 

1.2.4 处理器组成原来

 

一条指令执行完,需要经历3个阶段

 

 

1.2.5 流水线-CPU内部可以同时处理几条指令,不是一起处理,是处在同一阶段

 

 

1.2.6 Thumb寄存器

 

R8~R12这部分寄存器在Thumb模式下隐藏掉

 

 

1.3 汇编和C混合编程

 

 

1.3.1 汇编指令构造格式-ARM指令长度固定,4个字节,32位,定长

 

条件码   操作码   类码 S码    目的寄存器    源寄存器   立即数

MOV    R0,  #0x1

MOVS   R0,  R1    把R1寄存器的值存储到R0

    

 

条件码解析图

 

 

小知识

字节(Byte):通常将可表示常用英文字符8位二进制称为一字节。 

一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间. 
符号:英文标点2占一个字节,中文标点占两个字节
. 

1字节(Byte) = 8位(bit) 

比特(Bit),亦称二进制位。新港台:位元 

比特指二进制中的一位,是二进制最小信息单位。 
1比特就是1位

 

 

 

条件码

 

 

 

条件码与S码的区分:

工作的时间:

指令之前工作-------->判断条件码是否成立,例如beq指令

指令之后工作-------->根据S码的设置,影响CPSR相关标志位,没有具体说明是影响那个标志位

比如两个数相加,可以产生进位,也可以溢出

 

(当一个指令执行完之后,加完了产生的进位,进1

 

 

常用汇编指令

例如:

AREA asm1test,CODE,READONLY

ENTRY

MOV     R0 ,#0x1

MOV R1,R0

MOVR2,#0x2

 

ADD R3,R1,R2;R1+R2 = >R3

SUBR4,R3,R1  ;R3-R1=>R4

SUBSR0,R0,R0

B  .; . 表示当前指令地址

BL;保存返回函数的地址 (BBL的区别,有没有返回函数的地址)

MVNR5,#0x0;数据取反函数

 

MOV    R5,#0x0

MOVR6,#0x9000

STRR5[R6]

LDRR7[R6]

 

STR R5,[R6,#0x4] ;表示基址+偏移地址

LDRR7,[R6]

 

ORR R6,R1,R2 ;R1&R2=>R6

ANDR3,R1,R2 ;R1&R2=>R3

ADC   带进位加法

SUB 减法运算(只保存数据,不修改CPSR寄存器标志位

SBC 带借位减法

AND  汇编层面的并操作

ORR  32位逻辑或

EOR  32位逻辑异或

CMP  比较指令32位数比较)保存计算结果,目的,修改寄存器CPSR标志位

BIC  位清零指令

STR  从寄存器到内存

  STR  R5,[R6,#0x4]  ;表示基址+偏移地址

LDR  从内存到寄存器

SWP  交换指令

 

 

操作CPSR状态寄存器的两条指令

MRS  操作状态寄存器,R,register表示通用寄存器,S stack 表示状态寄存器

(把CPSR的值取出来给通用寄存器)

MSR  (把通用寄存器的值给CPSR状态寄存器)

小知识

一个寄存器只能保存32位数字,如果想做一个64位加法运算

 

如果修改CPSR里的值

 

 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值