1.运行模式

1.1:m3架构就只有特权和非特权两种模式,而A7有1种用户模式+8种特权模式

1.2:用户模式不能访问系统的所有资源,需借助异常来切换到其他模式才能访问被授以权限的资源

1.3:当发生中断或异常,处理器进入相应的处理模式,为了保护用户模式下的寄存器不被破坏,相应的模式提供了对应的寄存器组以供使用

 

 

2.寄存器组

2.1:浅色即是与user共用的寄存器,蓝色是各个模式所特有的

 

2.2:未备份寄存器R0-R7,9种模式所共用,切换模式,数据就会被破坏

2.3.:备份寄存器:R8-R14;R13也即sp,存放专用的栈地址;R14即连接寄存器,存放当前子程序的返回地址

2.4:程序计数器:R15,存放指向正在执行的指令的地址+8bytes(32位arm三级流水线,取指>译码>执行)

2.5:程序状态寄存器:CPSR,该寄存器包含了条件标志位、中断禁止位、当前处理器模式标志等一些状态位以及一些控制位。所有的处理器模式都共用一个 CPSR 必然会导致冲突,为此,除了 User 和 Sys 这两个模式以外,其他 7 个模式每个都配备了一个专用的物理状态寄存器,叫做 SPSR(备份程序状态寄存器),当特定的异常中断发生时,SPSR 寄存器用来保存当前程序状态寄存器(CPSR)的值,当异常退出以后可以用 SPSR 中保存的值来恢复 CPSR

 

 

3.GNU汇编语法

3.1:语句组成:         label:instruction @ comment

3.2:(1)预定义段:.text 表示代码段,.data 初始化的数据段,.bss 未初始化的数据段,.rodata 只读数据段;

   (2)自定义段:.section .mysection @定义一个 mysetcion 段

3.3:伪操作:

.byte 定义单字节数据,比如.byte 0x12。
.align 数据字节对齐,比如:.align 4 表示 4 字节对齐。
.end 表示源文件结束。
.global 定义一个全局符号,格式为:.global symbol,比如:.global _start;汇编程序的默认入口标号是_start
3.4:常用指令:

 

 

 

 

 

 

 

 

 

 

 

posted on 2019-11-17 15:31  lzd626  阅读(1127)  评论(0编辑  收藏  举报