基础知识
逻辑与IO:
计算机系统中用高、低电平来表示逻辑1和0
数据在计算机中的存储、传输、运算(对数据的处理方式)都是以二进制的形式进行的
数据的传输通过总线真正传递的是电信号,高低电平(0、1)。内存只有高低电平。运算在电路中运行的,集成电路中完成运算
计算机组成:
输入设备、输出设备、存储器、运算器、控制器
1.输入设备:将其他信号转换为计算机可以识别的信号(电信号) 。
2.输出设备:将电信号(0 1)转为人或其他设备能理解的信号。
3.存储器:存放程序和数据的部件,也是计算机能够实现“存储程序控制”的基础。
程序:指令的有序集合 ROM RAM
32为操作系统,寻址为32位。寻址空间位2^32,4G。
4.运算器:CPU对信息处理和运算的部件,常进行算术运算和逻辑运算,其核心是算术逻辑单元ALUCPU中用各种各样的数字电路搭配成各种各样的运算电路,如:加法、减法等。
5.控制器:整个计算机的指挥中心
总线:
数据总线 地址总线 控制总线
CPU工作原理
取指译码执行
编译原理:
能够识别的唯一的语言是机器码,一个CPU能够识别哪些机器码是由处理器的硬件(运算器种类)决定的不同的机器码代表不同的运算,同样不同的CPU的机器码是不通用的即不可以移植,汇编是用一个标识符来代表一个机器码,所以不同的CPU汇编也不一样,即汇编语言不可以移植。
语言编译的时候我们可以使用不同的编译器将C编译成不同的汇编和机器码,所以C可以不依赖CPU架构 。
指令的解析:
程序:指令的有序集合 ROM RAM
一条指令(机器码)的执行通常分为三个阶段:
1)取指:
控制器将PC寄存器中的值发送给内存,内存将对应地址中的指令(机器码)传送回CPU的指令寄存器IR中
2)译码:
指令译码器对IR中的指令进行识别,即将指令(机器码)翻译成具体的运算操作(+/-/*...)
3)执行:
运算器执行对应的指令并将结果写入寄存器执行完一条指令后CPU内对应的硬件会将PC的值自动增加使PC指向内存中的下一条指令
总结:
指令的执行是按照流水线
取指--》取指器 根据PC值取指令
译码--》译码器
执行--》执行器
PC永远指向当前正在取指指令的地址,一旦取到指令,pc后移4byte,保存下一条指令地址。
ARM的7种工作模式
7种工作模式介绍
(1)用户模式:
用户模式是用户程序的工作模式,它运行在操作系统的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常。
(2)系统模式:
系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操作系统在该模式下可以方便的访问用户模式的寄存器,而且操作系统的一些特权任务可以使用这个模式访问一些受控的资源。
说明:用户模式与系统模式两者使用相同的寄存器,都没有SPSR(Saved Program Statement Register,已保存程序状态寄存器),但系统模式比用户模式有更高的权限,可以访问所有系统资源。
(3)一般中断模式:
一般中断模式也叫普通中断模式,用于处理一般的中断请求,通常在硬件产生中断信号之后自动进入该模式,该模式为特权模式,可以自由访问系统硬件资源。
(4)快速中断模式:
快速中断模式是相对一般中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。
(5)管理模式(Supervisor,SVC) :
管理模式是CPU上电后默认模式,因此在该模式下主要用来做系统的初始化,软中断处理也在该模式下。当用户模式下的用户程序请求使用硬件资源时,通过软件中断进入该模式。
说明:系统复位或开机、软中断时进入到SVC模式下。
(6)终止模式:
中止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,linux下编程时经常出现的segment fault通常都是在该模式下抛出返回的。
(7)未定义模式:
未定义模式用于支持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操作时,会进入未定义模式。
说明:
1、用户模式外,其它6种模式称为特权模式。所谓特权模式,即具有如下权利:
a.MRS(把状态寄存器的内容放到通用寄存器);
b.MSR(把通用寄存器的内容放到状态寄存器中)。
由于状态寄存器中的内容不能够改变,因此要先把内容复制到通用寄存器中,然后修改通用寄存器中的内容,再把通用寄存器中的内容复制给状态寄存器中,即可完成“修改状态寄存器”的任务。
2、剩下的六种模式中除去系统模式外,统称为异常模式。
除用户模式外,其余6种工作模式都属于特权模式
特权模式中除了系统模式以外的其余5种模式称为异常模式
大多数程序运行于用户模式
进入特权模式是为了处理中断、异常、或者访问被保护的系统资源
硬件权限级别:系统模式 > 异常模式 > 用户模式
快中断与慢中断区别:快中断处理时禁止中断