一、存储器格局(字对齐):
Arm体系结构将存储器看做是从零地址开端的字节的线性组合。从零字节到三字节放置第一个存储的字(32位)数据,从第四个字节到第七个字节放置第二个存储的字数据,一次摆放。作为32位的微处理器,arm体系结构所支撑的最大寻址空间为4GB。
存储器格局
指令长度:
Arm微处理器的指令长度是32位的,也可认为16位(thumb状况下)。Arm微处理器中支撑字节(8位),半字(16位),字(32位)三种数据类型,其间,字需求4字节对齐,半字需求2字节对齐。
注:所谓的指令长度是一条完好的指令的长度,而不是单纯的mov这3个字母长度
二、ARM体系的CPU有两种作业状况
1、ARM状况:处理器履行32位的字对齐的ARM指令;
在程序运转的过程中,能够在两种状况之间进行相应的转化。处理器作业状况的改动并不影响处理器的作业形式和相应寄存器中的内容。
CPU上电处于ARM状况
三、ARM体系的CPU有以下7种作业形式:
Arm的作业形式切换有两种办法:
被迫切换:在arm运转的时分产生一些反常或许间断来主动进行形式切换
主动切换:经过软件改动,即软件设置寄存器来经行arm的形式切换,应为arm的作业形式都是能够经过相应寄存器的赋值来切换的。
Tips:当处理器运转在用户形式下,某些被维护的体系资源是不能被拜访的。
除用户形式外,其他6种作业形式都归于特权形式;
特权形式中除了体系形式以外的其他5种形式称为反常形式;
大多数程序运转于用户形式;
进入特权形式是为了处理间断、反常、或许拜访被维护的体系资源;
四、寄存器
ARM有31个通用的32位寄存器,6个程序状况寄存器,共分为7组,有些寄存器是一切作业形式共用的,还有一些寄存器专归于每一种作业形式;
R13——栈指针寄存器,用于保存仓库指针;
R14——程序衔接寄存器,当履行BL子程序调用指令时,R14中得到R15的备份,而当产生间断或反常时,R14保存R15的回来值;
R15——程序计数器;
快速间断形式有7个备份寄存器R8—R14,这使得进入快速间断形式履行很大部分程序时,乃至不需求保存任何寄存器;
其它特权形式都含有两个独立的寄存器副本R13、R14,这样能够令每个形式都具有自己的仓库指针和衔接寄存器;
五、当时程序状况寄存器(CPSR)
CPSR中各位含义如下:
T位:1——CPU处于Thumb状况, 0——CPU处于ARM状况;
I、F(间断制止位): 1——制止间断, 0——间断使能;
作业形式位:能够改动这些位,进行形式切换;
六、程序状况保存寄存器(SPSR)
当切换进入某一个特权形式时,SPSR保存前一个作业形式的CPSR值,这样,当回来前一个作业形式时,能够将SPSR的值康复到CPSR中;
七、形式切换
当反常产生,CPU进入相应的反常形式时,以下作业是由CPU主动完结的:
1、在反常形式的R14中保存前一作业形式的下一条行将履行的指令地址;
2、将CPSR的值复制到反常形式的SPSR中;
3、将CPSR的作业形式设为该反常形式对应的作业形式;
4、令PC值等于这个反常形式在反常向量表中的地址,即跳转去履行反常向量表中的相应指令;
从反常作业形式退回到之前的作业形式时,需求由软件来完结以下作业:
1、将反常形式的R14减去一个恰当的值(4或8)后赋给PC寄存器;
2、将反常形式SPSR的值赋给CPSR;