1、存储器格式(字对齐)编程
Arm体系结构将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次排列。做为32位的微处理器,arm体系结构所支持的最大寻址空间为4GB。操作系统
存储器格式设计
一、大端格式:高字节在低地址,低字节在高地址;内存
二、小端格式:高字节在高地址,低字节在低地址。资源
指令长度软件
Arm微处理器的指令长度是32位的,也能够为16位(thumb状态下)。Arm微处理器中支持字节(8位),半字(16位),字(32位)三种数据类型,其中,字须要4字节对齐,半字须要2字节对齐。硬件
注:所谓的指令长度是一条完整的指令的长度,而不是单纯的mov这3个字母长度。权限
2、ARM体系的CPU有两种工做状态数据类型
一、ARM状态:处理器执行32位的字对齐的ARM指令;请求
二、Thumb状态:处理器执行16位的、半字对齐的Thumb指令。
在程序运行的过程当中,能够在两种状态之间进行相应的转换。处理器工做状态的转变并不影响处理器的工做模式和相应寄存器中的内容。
CPU上电处于ARM状态。
3、ARM体系的CPU有如下7种工做模式
一、用户模式(Usr):用于正常执行程序;
二、快速中断模式(FIQ):用于高速数据传输;
三、外部中断模式(IRQ):用于一般的中断处理;
四、管理模式(svc):操做系统使用的保护模式;
五、数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储以及存储保护信盈达嵌入式企鹅要妖气呜呜吧久零就要;
六、系统模式(sys):运行具备特权的操做系统任务;
七、未定义指令停止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件。
CPU的模式能够简单的理解为当前CPU的工做状态,好比:当前操做系统正在执行用户程序,那么当前CPU工做在用户模式,这时网卡上有数据到达,产生中断信号,CPU自动切换到通常中断模式下处理网卡数据(普通应用程序没有权限直接访问硬件),处理完网卡数据,返回到用户模式下继续执行用户程序。
特权模式
除用户模式外,其它模式均为特权模式(Privileged Modes)。ARM内部寄存器和一些片内外设在硬件设计上只容许(或者可选为只容许)特权模式下访问。此外,特权模式能够自由的切换处理器模式,而用户模式不能直接切换到别的模式。
异常模式
特权模式中除系统(system)模式以外的其余5种模式又统称为异常模式。它们除了能够经过在特权下的程序切换进入外,也能够由特定的异常进入。好比硬件产生中断信号进入中断异常模式,读取没有权限数据进入停止异常模式,执行未定义指令时进入未定义指令停止异常模式。其中管理模式也称为超级用户模式,是为操做系统提供软中断的特有模式,正是因为有了软中断,用户程序才能够经过系统调用切换到管理模式。
(1)用户模式
用户模式是用户程序的工做模式,它运行在操做系统的用户态,它没有权限去操做其它硬件资源,只能执行处理本身的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能经过软中断或产生异常。
(2)系统模式
系统模式是特权模式,不受用户模式的限制。用户模式和系统模式共用一套寄存器,操做系统在该模式下能够方便的访问用户模式的寄存器,并且操做系统的一些特权任务能够使用这个模式访问一些受控的资源。
(3)通常中断模式
通常中断模式也叫普通中断模式,用于处理通常的中断请求,一般在硬件产生中断信号以后自动进入该模式,该模式为特权模式,能够自由访问系统硬件资源。
(4)快速中断模式
快速中断模式是相对通常中断模式而言的,它是用来处理对时间要求比较紧急的中断请求,主要用于高速数据传输及通道处理中。
(5)管理模式
管理模式是CPU上电后默认模式,所以在该模式下主要用来作系统的初始化,软中断处理也在该模式下,当用户模式下的用户程序请求使用硬件资源时经过软件中断进入该模式。
(6)终止模式
停止模式用于支持虚拟内存或存储器保护,当用户程序访问非法地址,没有权限读取的内存地址时,会进入该模式,Linux下编程时常常出现的segment fault一般都是在该模式下抛出返回的。
(7)
未定义模式
未定义模式用于支持硬件协处理器的软件仿真,CPU在指令的译码阶段不能识别该指令操做时,会进入未定义模式。