ARM体系结构与编程

一 ARM V8架构

世界上存在四套主流cpu架构

arm mips ppc        属于risc(精简指令集)

x86                        属于cisc(复杂指令集)

a 一般应用于高大上的领域 比如:智能手机 手表 .. cortex-a  (涉及到音视频处理)

r  real time 实时 一般应用于对实时性要求比较高的领域

m stm32f103rbt6 cortex-m 以单片机的价格实现32b的性能


独占式访问:

只有一个进程可以同时访问某一个设备,其他进程不允许访问

二 ARM体系结构与编程

Advanced Risc machines

2.1 arm的两种工作状态

arm工作状态         32b

thumb工作状态     16b

以上两种工作状态可以相互切换,但是在异常模式下,arm只能处于arm工作状态

2.2 简述cpu内部的构造

processor --- cpu core

浮点运算单元 fpu

内存管理单元 mmu 

注意:将来一旦SOC上跑起来操作系统之后,CPU万万不能直接访问物理地址,只能访问由mmu映射之后的虚拟地址

cortex-A53 V7 有序的8级流水线

cortex-A57 V8 乱序的 15+级流水线

2.3 三级流水线

取指 fetch

解码 decode

执行 execute

指令周期数 cpi = 指令周期数/执行的指令的数量

PC:处于cpu内部,永远保存当前正在执行的指令的地址

2.4 ARM寄存器的组织格式

ARM有7种工作模式

        fiq          快速中断模式        发生高优先级中断

        irq          终端异常模式        发送低优先级中断

        undef     未定义异常模式    遇到了不认识的指令

        svc         管理模式               系统上电,执行软中断指令        内核态

        abort      终止异常模式        非法访问存储器

                                                     //注:按字(4字节)访问,0x4/8/c/0是合法的

        system   系统模式               与用户模式公用寄存器模式

        user        用户模式               用户态

前5种为异常模式 后两种为正常模式

前6种为特权模式 最后一种为非特权模式

中断仅仅是异常的一种

外设中的所有寄存器都是特殊功能寄存器

cpu内部的寄存器是通用寄存器

通用寄存器和特殊功能寄存器的区别:

        1.特殊功能寄存器有实际的物理地址

                通用寄存器没有物理地址

        2.只能通过名字访问通用寄存器

arm寄存器的组织结构

arm中有37个通用寄存器(通用寄存器可以通过名字进行访问, 用C语言很难访问到

        31个通用寄存器        user/system         r0~r15         fiq        r8~r14

                     scv   undef  irq  abort  r13~r14


                     r0~r15

                     r13 --- sp stack pointer 栈指针

                     r14 --- lr        保存函数的返回地址

                     r15 --- PC      永远保存的是当前正在执行的指令的地址

        6个状态寄存器

                      1个cpsr        当前程序状态寄存器

                       5个spsr        程序状态备份寄存器

        当异常发生的时候:

        cpu硬件上会自动完成四件事:

        保护现场

        1.spsr_<irq> = cpsr

        2.lr = pc + 4

        3.跳转到异常向量表中处理中断处理函数

        4.恢复现场        cpsr = spsr_<irq>

                                  pc = lr

三 ARM汇编指令

        3.0所有的SOC上电初期,执行的一定是汇编指令

                上电初期,内存未做初始化,C语言没有运行环境

        3.1 arm支持的数据类型

                byte                B

                half-word        2B

                word                4B

                double word    8B

                 quad word      16B        --aarch64

        3.2 ARM的存储格式

                小端模式

                字节序:

                        大端模式                        小端模式

                地址:

                0x00        0x12                        0x78

                0x01        0x34                        0x56

                0x02        0x56                        0x34

                0x03        0x78                        0x12

        如何判断处理器大小端

                int val = 0x12345678;

                char *p;

3.3 CPSR/SPSR寄存器

       N Z C V

N:        负数,和运算结果的最高位相关保持一致

Z:        0,运算结果为0,Z==1,else Z==0

C:        错位或进位标志位

V:      溢出标志位,运算结果有溢出V==1,else V==0        

如果结果为零,则设置为1,否则设置为0

设置为结果的执行值,或者设置为以为操作溢出的最后一位的值

溢出,如果发生有符号溢出或下溢,设为1,否则为0

3.32条件码

EQ               相等                       Z=1

NE                    不相等                   Z=0

CS/HS         无符号的大于         C=1

CC        &n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值