ARM有37个寄存器,其间31个通用寄存器,6个状况寄存器。本文首要评论的是ARM体系的CPU的7种作业形式。
一、存储器格局(字对齐)
Arm体系结构将存储器看做是从零地址开端的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次摆放。作为32位的微处理器,arm体系结构所支撑的最大寻址空间为4GB。
存储器格局
1、大端格局:高字节在低地址,低字节在高地址;
2、小端格局:高字节在高地址,低字节在低地址。
指令长度
Arm微处理器的指令长度是32位的,也可认为16位(thumb状况下)。Arm微处理器中支撑字节(8位),半字(16位),字(32位)三种数据类型,其间,字需求4字节对齐,半字需求2字节对齐。
注:所谓的指令长度是一条完好的指令的长度,而不是单纯的mov这3个字母长度。
二、ARM体系的CPU有两种作业状况
1、ARM状况:处理器履行32位的字对齐的ARM指令;
2、Thumb状况:处理器履行16位的、半字对齐的Thumb指令。
在程序运转的过程中,能够在两种状况之间进行相应的转化。处理器作业状况的改变并不影响处理器的作业形式和相应寄存器中的内容。
CPU上电处于ARM状况。
三、ARM体系的CPU有以下7种作业形式
1、用户形式(Usr):用于正常履行程序;
2、快速间断形式(FIQ):用于高速数据传输;
3、外部间断形式(IRQ):用于一般的间断处理;
4、管理形式(svc):操作体系运用的维护形式;
5、数据拜访停止形式(abt):当数据或指令预取停止时进入该形式,可用于虚拟存储以及存储维护。
6、体系形式(sys):运转具有特权的操作体系使命;
7、未定义指令间断形式(und):当未定义的指令履行时进入该形式,可用于支撑硬件。
CPU的形式能够简略的理解为当时CPU的作业状况,比方:当时操作体系正在履行用户程序,那么当时CPU作业在用户形式,这时网卡上有数据抵达,发生间断信号,CPU主动切换到一般间断形式下处理网卡数据(一般应用程序没有权限直接拜访硬件),处理完网卡数据,回来到用户形式下持续履行用户程序。
特权形式
除用户形式外,其它形式均为特权形式(Privileged Modes)。ARM内部寄存器和一些片表里设在硬件规划上只允许(或许可选为只允许)特权形式下拜访。此外,特权形式能够自在的切换处理器形式,而用户形式不能直接切换到其他形式。
反常形式
特权形式中除体系(system)形式之外的其他5种形式又统称为反常形式。它们除了能够经过在特权下的程序切换进入外,也能够由特定的反常进入。比方硬件发生间断信号进入间断反常形式,读取没有权限数据进入间断反常形式,履行未定义指令时进入未定义指令间断反常形式。其间管理形式也称为超级用户形式,是为操作体系供给软间断的特有形式,正是因为有了软间断,用户程序才能够经过体系调用切换到管理形式 。
(1)用户形式
用户形式是用户程序的作业形式,它运转在操作体系的用户态,它没有权限去操作其它硬件资源,只能履行处理自己的数据,也不能切换到其它形式下,要想拜访硬件资源或切换到其它形式只能经过软间断或发生反常。
(2)体系形式
体系形式是特权形式,不受用户形式的约束。用户形式和体系形式共用一套寄存器,操作体系在该形式下能够便利的拜访用户形式的寄存器,并且操作体系的一些特权使命能够运用这个形式拜访一些受控的资源。
(3)一般间断形式
一般间断形式也叫一般间断形式,用于处理一般的间断恳求,一般在硬件发生间断信号之后主动进入该形式,该形式为特权形式,能够自在拜访体系硬件资源。
(4)快速间断形式
快速间断形式是相对一般间断形式而言的,它是用来处理对时间要求比较紧迫的间断恳求,首要用于高速数据传输及通道处理中。
(5)管理形式
管理形式是CPU上电后默许形式,因此在该形式下首要用来做体系的初始化,软间断处理也在该形式下,当用户形式下的用户程序恳求运用硬件资源时经过软件间断进入该形式。
(6)停止形式
间断形式用于支撑虚拟内存或存储器维护,当用户程序拜访不合法地址,没有权限读取的内存地址时,会进入该形式,Linux下编程时经常出现的segment fault一般都是在该形式下抛出回来的。
(7)
未定义形式
未定义形式用于支撑硬件协处理器的软件仿真,CPU在指令的译码阶段不能辨认该指令操作时,会进入未定义形式。