L12D2 ARM体系结构理论基础

一、ARM处理器概述

(一)ARM的概念

1、公司:设计ARM处理器的公司,Accorn RISC Machines

2、处理器的通称:ARM处理器分不同版本

3、技术:从ARM7开始广泛应用,ARM9,ARM11。

片上系统SOC:在一个芯片中集成了一个系统的所有硬件。

(二)ARM的分类

Cortex下面A,R,M三个系列

A系列大型操作系统,手机,平板,安卓系统,Linux系统,A8,A9,A53

R系列实时性比较高的,军工

M系列取代传统单片机,低功耗,低价格,高执行效率

(三)RISC和CISC

处理器分为精简指令集处理器和复杂指令集处理器,ARM是应用最广泛的精简指令集处理器。

常见的复杂指令集处理器有inter,x86,AMD等。

二者的本质区别:

随着CPU性能的不断提升,处理器中的运算越来越多,CPU性能越来越强,但是体积越来越大,价格越来越贵。

精简指令通过编译器的优化,复杂指令可以实现简单指令的组合实现,3×3->3+3+3,但是精简指令集的处理时间变长,复杂指令集的性能更高。复杂指令集包括很多不常用的特殊指令,结构复杂,硬件多。

充电电脑用的是复杂指令集,手机用的是精简指令集。

精简指令集的指令长度相同,周期固定。复杂指令集指令长度不同。周期不固定。

二、ARM指令集概述

(一)指令集的概念

1、指令

学习处理器最重要的学习指令集。

指令以二进制代码的形式存在,加法指令通过译码编程01机器码,CPU直接认识的是机器码。

一句C代码可能对应多条指令,但是一条指令只对应一条汇编语言。

程序是指令的有序集合。

2、指令集

处理器能识别的指令的集合称为指令集。指令集是处理器对开发者提供的接口。

3、ARM支持的指令集

ARM指令集占用空间多,代码灵活度高。所有指令都占32bit,PC自增4。

Thumb指令集代码密度高,节省空间,所有指令都占16bit,PC自增2。Thumb指令集并不是独立的指令集,往往不能完成一个项目。使用少。

(二)编译原理

1、机器码01的弊端:不好读写,不可移植。

2、汇编:用一个字符代替一个机器码。ADD-0101,因为和机器码一一对应,一个处理器能够处理乘除,但另外一个不一定,区分架构(处理器)所以不能移植。

3、C语言:可移植,依赖于编译器,所以不区分处理器架构。

x86编译:gcc -S

ARM编译:arm-gcc -S

同样的代码在不同CPU中运行,不需要改变代码,只需要下载不同的编译器。

4、编译的四个步骤

预处理:对注释进行删除,对宏进行展开,对头文件展开

编译:C语言-汇编语言

汇编:汇编语言-机器码

链接:机器码和库里的机器码合成可执行程序,放到CPU中执行。

三、ARM存储模式

(一)ARM的数据类型

1、知识点

CPU除了要处理数据,还要进行运算,例如处理变量

C语言代码通过编译才能被执行,C语言中的数据类型,放到ARM中就不能被执行了。

32位架构:ARM单次数据处理的能力。32位架构一次能够处理32位的数据。

两个32位数加,一次算完。两个64位数,需要两次先高位再低位。

2、ARM的数据类型

Byte:8bits -------char

Halfword:16bits --------short

Word:32bits --------int

ARM不能直接运算浮点型数据,但可以通过协处理器。在ARM的外围加一个处理器,处理浮点型数据。

ARM规定Word型数据在内存的起始地址必须是4的整数倍。Halfword型的起始位置必须是2的倍数。

3、字节序

如果一个数据只有一个字节,不需要考虑字节序。如果涉及多个字节,这一个数据内才有大端对其或者小端对其的说法。

大端对齐,低位存高位,小端相反,ARM使用小端对齐。

0x12345678,其中0x12是高位,0x78是低位。

测试代码:

#include<stdio.h>
int main(){
unsigned int a =0x12345678;
char *pa = &a;
printf("pa = %x\n",*pa);
return 0;
}

由结果可知,乌班图是小端对齐,嵌入式开发一般是小端对齐,路由器是大端对齐。

(二)ARM指令存储

PC = 3没有意义,必须是4的整数倍,因此[1:0]一定是0

四、ARM工作模式

(一) Cortex-A9具有8个模式

满足不同场合的需求

1、User

和Linux用户态内核态不同,ARM的用户态是在运行应用程序时,处于User

2、FIQ

高优先级中断

3、IRQ

低优先级中断

4、SVC

复位:开机到系统执行程序前

软中断:通过代码实现中断

5、Abort

存取异常,CPU向内存中读取数据

6、Undef

机器码指令未定义

7、System

和User类似,比User权限高

8、Monitor

执行安全检测代码

模式2-6属于异常模式

(二)工作模式的分类

User模式权限最低,保护操作系统,出错后损失小

不同模式拥有不同权限

不同模式执行不同代码

不同模式完成不同功能

五、注意事项

1、只有CPU能够执行的运算才是指令,RISC处理器中,3×3不是指令,译码后的3+3+3才是指令。

2、同样的代码在不同CPU中运行,不需要改变代码,只需要下载不同的编译器。

3、PC = 3没有意义,必须是4的整数倍,因此[1:0]一定是0。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值