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

【嵌入式汇编基础】-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.xdnf.cn/news/16849.html

相关文章:

  • 宝塔配置文件缺失导致无法正常启动
  • Java 集合框架: LinkedHashSet
  • 进程 Vs 线程
  • 【OpenGL】LearnOpenGL学习笔记01 - 环境配置、窗口创建
  • Flask + YARA-Python*实现文件扫描功能
  • 开源列式分布式数据库clickhouse
  • 深入 Go 底层原理(十三):interface 的内部表示与动态派发
  • Redisson高并发实战:Netty IO线程免遭阻塞的守护指南
  • 算法提升之数学(快速幂+逆元求法)
  • 【20min 急速入门】使用Demucs进行音轨分离
  • Redis7 String类型数据
  • 【iOS】KVO
  • MyBatisPlus之CRUD接口(IService与BaseMapper)
  • 28Rsync免密传输与定时备份
  • 关于Web前端安全防御XSS攻防的几点考虑
  • Spring Boot 全 YAML 配置 Liquibase 教程
  • C++之vector类的代码及其逻辑详解 (中)
  • DockerFile文件执行docker bulid自动构建镜像
  • CMake指令:mark_as_advanced
  • Python序列去重高级指南:保持顺序的高效去重技术
  • 错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException
  • 云原生三剑客:Kubernetes + Docker + Spring Cloud 实战指南与深度整合
  • 分类任务当中常见指标 F1分数、recall、准确率分别是什么含义
  • 类似 Pixso 但更侧重「网页 / 软件界面设计」「前后端可视化开发」的工具
  • 【贪心】P11112 [ROI 2024] 机器人物流 (Day 1)|普及+
  • 基于python多光谱遥感数据处理、图像分类、定量评估及机器学习方法应用
  • Java函数式编程之【Stream终止操作】【下】【二】【收集器toMap()】【叁参数收集操作collect()】
  • Maven项目和Spring项目的异同
  • 企业资产|企业资产管理系统|基于springboot企业资产管理系统设计与实现(源码+数据库+文档)
  • Docker容器中文PDF生成解决方案