当前位置: 首页 > news >正文

【嵌入式汇编基础】-ARM架构基础(三)

ARM架构基础(三)

文章目录

  • ARM架构基础(三)
    • 7、AArch64 执行状态
      • 7.3 程序计数器
      • 7.4 堆栈指针
      • 7.5 零寄存器
      • 7.6 链接寄存器
      • 7.7 帧指针
      • 7.8 平台寄存器 (x18)
      • 7.9 过程内调用寄存器
      • 7.10 SIMD 和浮点寄存器
      • 7.11 系统寄存器
      • 7.13 PSTATE

7、AArch64 执行状态

7.3 程序计数器

程序计数器寄存器 PC 保存当前指令的地址。从概念上讲,每条指令在执行前都会从 PC 引用的内存位置加载。除非 PC 在指令的正常执行过程中被明确更改(例如通过分支指令),否则 PC 会自动前进到下一条指令。在 Armv8 中,PC 不能直接访问,也不能指定为加载或数据处理指令的目标。PC 只能通过异常生成、异常返回和分支指令进行明确更新。

可以读取 PC 的普通指令如下:

  • 带链接指令的分支(BL、BLR),这些指令需要读取 PC 以将返回地址存储在链接寄存器 (LR) 中。
  • PC 指令:相对地址生成,例如 ADR 和 ADRP、直接分支和字面量加载

7.4 堆栈指针

堆栈指针寄存器 SP 跟踪当前线程的堆栈位置,通常指向当前线程堆栈的逻辑“顶部”。程序使用堆栈区域来高效地存储和访问给定函数的局部变量数据,并将其用作通用“临时”存储器,用于存储函数返回地址等数据。

在 AArch64 中,SP 是一个特殊寄存器,大多数指令无法像使用通用寄存器那样引用它。读写 SP 的唯一方法是通过专用指令形式。例如,可以使用算术 ADD 或 SUBTRACT 指令形式在函数的起始或结束阶段修改 SP。SP 还有一个 32 位“视图”,称为 WSP,尽管在实际的逆向工程中很少遇到。

在AArch64架构中,SP寄存器

http://www.dtcms.com/a/312031.html

相关文章:

  • 动态规划解最长回文子串:深入解析与优化问题
  • 【redis】基于工业界技术分享的内容总结
  • JS的作用域
  • 第15届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2024年1月28日真题
  • sqli-labs:Less-20关卡详细解析
  • MFC 实现托盘图标菜单图标功能
  • 中州养老Day02:服务管理护理计划模块
  • 中之人模式下的虚拟主持人:动捕设备与面捕技术的协同驱动
  • 2025系规教材改革后,论文怎么写?
  • 错误处理_IncompatibleKeys
  • 在Linux上对固态硬盘进行分区、格式化和挂载的步骤
  • CH32V单片机启用 FPU 速度测试
  • MVVM——ArkUI的UI开发模式
  • 使用Python开发Ditto剪贴板数据导出工具
  • 使用C++实现日志(2)
  • MCP终极指南 - 从原理到实战(基础篇)
  • 面试实战,问题二十二,Java JDK 17 有哪些新特性,怎么回答
  • windows内核研究(软件调试-异常的处理流程)
  • 幂等性介绍和下单接口幂等性保证实现方案
  • 雷卯针对香橙派Orange Pi RV2开发板防雷防静电方案
  • kotlin小记(1)
  • Waterfox水狐浏览器、火狐浏览器外观修改
  • Dice Combinations(Dynamic Programming)
  • 【Bug记录】关于copy的表不能copy主键和index的解决办法
  • python:以支持向量机(SVM)为例,通过调整正则化参数C和核函数类型来控制欠拟合和过拟合
  • SM2椭圆曲线密码算法原理与纯C语言实现详解
  • #Linux内存管理# 用一个案例详细介绍ARMv7-A架构 缺页中断处理的原理
  • ARMv8/v9架构FAR_EL3寄存器介绍
  • imx6ull-驱动开发篇6——Linux 设备树语法
  • P10816 [EC Final 2020] Namomo Subsequence|普及+