逆向工程原理L1.3 ARM架构简介

本文介绍了ARM架构的发展历程,重点阐述了ARMv8的里程碑式变化,包括64位架构、A64指令集、异常处理机制以及特权级别和特权切换。详细讲解了CPU处理器的异常类型和处理流程,以及ARMv8寄存器体系结构。
摘要由CSDN通过智能技术生成


ARM架构简介

主要特点

  • 精简指令集架构(RISC,Reduced Instruction Set Computer):相比之下,x86-64为了兼任历史版本,指令集十分繁杂
  • 在成本、功耗、散热方面表现优异
  • 最初主要用于嵌入式场景(如手表、摄像头),目前在PC、手机、服务器上也应用广泛
  • 特性
    • 寄存器数量多
    • Load/Store架构(单独的访存指令)
    • 定长指令
    • 指令条件执行
      [CSEL X7, X2, X0, EQ ; if (cond == true) X7 = X2, else X7 = x0]

发展历程

1985,Acorn公司开发出世界第一款RISC处理器
1990,ARM发布
2013,全球近60%的移动设备采用ARM架构的芯片
2021,ARMv9推出,这是公司十年来首次重大架构变革
在这里插入图片描述

ARMv8

里程碑式架构

  • 增加了可选的64位架构,aarch64
  • 支持32位程序在64位操作系统中执行
  • 新的64位指令集,A64
  • 拥有31个通用64位寄存器
  • 新的异常处理机制## 异常处理机制

异常处理机制简介

常见的CPU处理器异常包括:

中断(Interrupt)、陷阱(Trap)、故障(Fault)、终止(Abort)

CPU处理器的异常处理通常包括以下几个步骤:
  • 触发异常:软件/硬件触发异常
  • 保存上下文:保存当前执行的上下文,以便后续恢复执行
  • 异常处理:根据不同的异常模式使用不同异常处理函数处理异常
  • 恢复执行:根据存储的上下文恢复到异常前的执行现场

ARMv8异常处理

  • ARMv8使用异常级别异常类型一同决定异常处理模式

异常类型包括:SError、FIQ、IRQ、Synchronous

  • ARMv8中每个异常级别都有对应的异常向量表,存
    储在VBAR_ELn寄存器中
  • 在异常发生时,处理器根据异常级别与异常发生上下
    文信息选择异常向量表中不同异常处理函数进行异常
    处理

ARMv8特权级

  • 又称异常级别
  • EL0–EL3权限递增
    • EL0:用户程序
    • EL1:操作系统内核
    • EL2:虚拟机监视器
    • EL3:低级固件,包括Secure Monitor
  • 特权级别只在异常发生/结束时发生变化
特权切换

当程序运行过程中需要请求更高权限的功能时,需要使用系统调用来切换特权级
ARM系统切换指令

SVC		# EL0->EL1
HVC     # EL1->EL2
SMC		# EL1/EL2->EL3

ARMv8 ISA

ARMv8中主要使用A64指令集,但仍然支持A32和T32模式

通过修改PSR寄存器切换不同模式

A32

  • 指令宽度:32bits
  • 兼容32位ARMv7架构的系统
    A64
  • 指令宽度:32bits
  • 64位寻址空间
    • 与x86-64不同,使用定长4字节指令加载地址
    • 通过两条指令来加载内存地址
      • adrp:加载变量所在页地址
      • add:加载变量页内偏移
  • 强大的SIMD和浮点运算支持

ARMv8寄存器

31个通用寄存器(X0-X30)

  • 每个寄存器为64bits
  • 可以使用Wx来访问Xx的低32bits

32个浮点寄存器(V0-V31)

  • 每个寄存器为128bits(Qx)
  • 可以访问8bits(Bx)、16bits(Hx) 、32bits(Sx)、64bits(Dx)

特殊寄存器

  • 零寄存器(XZR/WZR)
    • 作为源寄存器时值视为0
  • 程序计数器(Program Counter, PC)
    • aarch64中为当前指令地址
    • aarch32中为当前指令地址 + 8
  • 栈帧寄存器(Stack Pointer, SP)
    • 指向栈顶所在地址
  • 异常链接寄存器(Exception Link Register, ELR)
    • 存储发生异常时的返回地址
  • 进程状态寄存器(Saved Process Status Register, SPSR)
    • 存储发生异常前程序状态信息

特殊寄存器

  • 程序状态寄存器(Program Status Register, PSR)
    • CPSR(Current Program Status Register)
    • 存储了当前执行状态的信息,包括条件码、中断使能、模式等
    • APSR(Application Program Status Register)
    • 在User-mode下不能直接访问CPSR,使用APSR来替代CPSR
    • APSR包括CPSR中N, Z, C, V, Q, GE[3:0]标志位
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值