首页 > 编程语言 >ARM体系结构与汇编

ARM体系结构与汇编

时间:2023-02-07 17:34:36浏览次数:27  
标签:汇编 模式 指令 处理器 寄存器 ARM CPSR 体系结构

  • ARM体系结构

在ARM处理器中,除了用户模式是普通模式,剩下的几种工 作模式都属于特权模式。

应用程序如果要读写磁盘上的音频数据,驱 动声卡播放音乐,往屏幕写数据显示歌词,则要首先通过系统调用或软 中断进入处理器特权模式,运行操作系统内核或硬件驱动代码,才能对 底层的硬件设备进行读写操作

 

  • ARM处理器中的寄存器可分为通用寄存器和专用寄存器两种。
  • 寄存器R0~R12属于通用寄存器,除了FIQ工作模式,在其他工作模式下这些寄存器都是共用、共享的:

      R0~R3通常用来传递函数参数,

      R4~R11用来保存程序运算的中间结果或函数的局部变量等,

      R12常用来作为函数调用过程中的临时寄存器。

  • 有一些寄存器在各自的工作模式下是独立存在的,如R13、R14、R15、CPSP、SPSR寄存器,在每个工作模式下都有自己单独的寄存器。
  • R13寄存器又称为堆栈指针寄存器 (Stack Pointer,SP),用来维护和管理函数调用过程中的栈帧变化,R13总是指向当前正在运行的函数的栈帧,一般不能再用作其他用途。
  • R14寄存器又称为链接寄存器(Link Register,LR),在函数调用过程中主要用来保存上一级函数调用者的返回地址。
  • 寄存器R15又称为程序计数器(Program Counter,PC),CPU从内存取指令执行,就是默认从PC保存的地址中取的,每取一次指令,PC寄存器的地址值自动增加。
  • 在ARM三级流水线中,PC指针的值等于当前正在运行的指令地址+8,后续的32位处理器虽然流水线的级数不断增加,但为了简化编程,PC指针的值继续延续了这种计算方式。
  • 当前处理器状态寄存器(Current Processor State Register,CPSR)主要用来表征当前处理器的运行状态。除了各种状态位、标志位,CPSR寄存器里也有一些控制位,用来切换处理器的工作模式和中断使能控制。

 

 

  • 在每种工作模式下,都有一个单独的程序状态保存寄存器(Saved Processor State Register,SPSR)。当ARM处理器切换工作模式或发生异常时,SPSR用来保存当前工作模式下的处理器现场,即将CPSR寄存器的值保存到当前工作模式下的SPSR寄存器。当ARM处理器从异常返回时,就可以从SPSR寄存器中恢复原先的处理器状态,切换到原来的工作模式继续运行
  • 为了快速响应中断,减少中断现场保护带来的时间开销,在FIQ工作模式下,ARM处理器有自己独享的R8~R12寄存器。

 

 

 

 

 

 

  • ARM汇编指令

一个完整的ARM指令通常由操作码+操作数组成,指令的编码格式如下:

指令格式的具体说明如下:

  • 使用<>标起来的是必选项,使用{ }标起来的是可选项。
  • <opcode>是二进制机器指令的操作码助记符,如MOV、ADD这些汇编指令都是操作码的指令助记符。
  • cond:执行条件,ARM为减少分支跳转指令个数,允许类似BEQ、BNE等形式的组合指令。
  • S:是否影响CPSR寄存器中的标志位,如SUBS指令会影响CPSR寄存器中的N、Z、C、V标志位,而SUB指令不会。
  • Rd:目标寄存器。
  • Rn:第一个操作数的寄存器。
  • operand2:第二个可选操作数,灵活使用第二个操作数可以提高代码效率。

 

 

 

  • ARM寻址方式

  • ARM伪指令

  • ARM汇编程序设计

  • C语言和汇编语言混合编程

  • GNU ARM汇编语言

标签:汇编,模式,指令,处理器,寄存器,ARM,CPSR,体系结构
From: https://www.cnblogs.com/hhkhhx/p/17099225.html

相关文章

  • 三、pycharm安装
    1、安装安装包:pycharm-professional-2021.2.2.exe破解包:ide-eval-resetter-2.1.13.zip1、双击开始安装 2、路径换到D盘 3、选择图示中的内容   安装中 ......
  • OpenHarmony富设备移植指南(2)从postmarketOS获取移植资源
    开篇引言安卓设备的引导需要boot.img镜像,其中含有内核镜像,设备树,boot配置文件,initrd.img根文件系统镜像,开发板因为是开发用途,系统引导基本没有限制,而成......
  • 10.1汇编语言与本地代码是一 一对应的
    在加法运算的本地代码中加上add(addition的缩写)、在比较运算的本地代码中加上cmp(compare的缩写)等。这些缩写称为助记符,使用助记符的编程语言称为汇编语言。这样,通过查看......
  • arm架构服务器 centos7 更换yum源
    1.清除缓存yumcleanall2.创建备份目录mkdir/etc/yum.repos.d/bak3.备份mv/etc/yum.repos.d/*.repo/etc/yum.repos.d/bak4.在/etc/yum.repos.d/目录下创建一下三个文件......
  • 汇编ah=2输出字符
    .modelsmall.stack256;默认为1kb.databufxdb66bufydb67bufzdb?.code.startupmoval,bufxmovbl,bufycmpal,blja......
  • 如何实现OpenHarmony的OTA升级
     OTA简介随着设备系统日新月异,用户如何及时获取系统的更新,体验新版本带来的新的体验,以及提升系统的稳定性和安全性成为了每个厂商都面临的严峻问题。OTA(OvertheAir)......
  • 使用 pycharm pip install 问题
    1. 出现trusted_host问题,说明没有配置信任证书,需要在pip.ini里面配置trusted_host;2.设置代理:settings>HTTPProxy>ManualSet127.0.0.1>ConnectionTest......
  • 汇编hello world
    普通datasegment;数据段stringdb'Hello,World!$'dataendscodesegment;代码段assumecs:code,ds:datastart:movax,data;获取段基址movds,ax......
  • Pycharm + robotframework自动化框架搭建
    前面讲过在Eclipse环境中搭建robotframework框架,这里基于PyCharm开发工具说说怎么实现写robot自动化。(使用体验:Robot还是配Eclipse比较好使)一、基础环境配置1.安装Pyt......
  • pycharm无限续30天试用
    使用步骤:1.打开pycharm忽略错误2.下载如下链接zip并解压,将jar包拖拽到pycharm即可续期30天试用ps:仅限Windows使用https://files.cnblogs.com/files/blogs/780699/pyc......