当前位置: 首页 > 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.lryc.cn/news/607880.html

相关文章:

  • u-boot启动过程(NXP6ULL)
  • 网络常识-子网掩码
  • 音视频学习(四十四):音频处理流程
  • Oracle 11g RAC集群部署手册(三)
  • PHP面向对象编程与数据库操作完全指南-上
  • Redis 核心概念、命令详解与应用实践:从基础到分布式集成
  • C语言字符函数和字符串函数全解析:从使用到模拟实现
  • 力扣面试150题--回文数
  • 2411. 按位或最大的最小子数组长度
  • 历史数据分析——中青旅
  • OneCode 3.0智能分页拦截器深度解析:从拦截机制到性能优化
  • 仿muduo库实现高并发服务器
  • flink写paimon表的过程解析
  • 华为核心交换机S7700的内存OID
  • Unity_数据持久化_XML基础
  • MATLAB科研数据可视化技术
  • LPVIMO-SAM:基于多传感器紧耦合的高精度鲁棒SLAM系统
  • Noob靶机
  • VueX进阶Pinia
  • VScode对Ubuntu用root账号进行SSH远程连接开发
  • 技巧|SwanLab记录混淆矩阵攻略
  • 解决忘记修改配置密码而无法连接nacos的问题
  • DockerFile文件执行docker bulid自动构建镜像
  • Android 15 限制APK包手动安装但不限制自升级的实现方案
  • 20250802让飞凌OK3576-C开发板在飞凌的Android14下【rk3576_u选项】适配NXP的WIFIBT模块88W8987A的蓝牙
  • 【Android】通知
  • React ahooks——副作用类hooks之useDebounceFn
  • linux eval命令的使用方法介绍
  • 【vue】创建响应式数据ref和reactive的区别
  • 防火墙配置实验2(DHCP,用户认证,安全策略)