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

【ARM汇编语言基础】-内存访问指令(二)

内存访问指令(二)

文章目录

  • 内存访问指令(二)
    • 2、寻址模式和偏移量形式
      • 2.3 寄存器偏移量
      • 2.4 预索引模式
      • 2.5 后变址寻址
      • 2.6 字面量(PC 相对)寻址
        • 2.6.1 加载常量

2、寻址模式和偏移量形式

2.3 寄存器偏移量

有时,相对于基址的偏移量并非恒定偏移量,而是动态计算并写入寄存器的。这意味着偏移量值可以在通用寄存器中指定,该通用寄存器的值会加到基址寄存器地址上或从基址寄存器地址中减去。这种寄存器偏移量形式在访问数组或数据块的程序中很常见。例如,在 C/C++ 中,代码 char c = my_string[i] 访问 my_string 数组第 i 个元素的单个字节,而 i 很可能存储或加载到寄存器中。

在深入探讨细节之前,让我们先来看看 A32 和 A64 指令集之间寄存器偏移量形式的差异。

A32 寄存器偏移量形式允许将偏移量值指定为通用寄存器。Rn 是基址寄存器,Rm 是寄存器偏移量。

LDR Rt, [Rn, Rm]

A32 缩放寄存器偏移量形式允许将偏移量寄存器移位一个立即数,然后再将其应用于基址寄存器地址。此形式常用于 C/C++ 程序中,将数组索引按每个数组元素的大小缩放。此偏移量形式可用的移位运算包括 LSL、LSR、ASR、ROR 和 RRX。

LDR Rt, [Rn, Rm, <shift> #imm]

A64 寄存器偏移量是 64 位通用寄存器 X0-X30 中的一个,语法标签为 Xm。请记住,在 A64 中,基址寄存器始终为 64 位 (Xn)。在这种情况下,SP 不能用作寄存器

http://www.cnnetsun.cn/news/69380.html

相关文章:

  • 为什么你的协程系统响应迟缓?优先级调度设计缺陷可能是罪魁祸首
  • 构造函数返回对象时的陷阱:为什么 `return {}` 会覆盖 new 操作符的默认行为
  • 宏任务与微任务的边界:为什么在不同浏览器环境下 Promise 的执行时序可能不一致
  • 智能工牌如何帮房企智能盘客,提升销售转化?
  • LP3713CH_5W/SOP7隔离适配器和充电器自供电PSR控制芯片 典型应用电路
  • FT8393MB1(5V/2.4A)12W线式电源控制芯片 典型应用电路
  • [吾爱大神原创工具] Python脚本打包为“EXE”工具(史上最高颜值)
  • 当电机遇上滑移:四轮驱动车能耗与稳定性的双线作战
  • AI视频工具普及,为何内容团队工时反增20%?
  • SQL多表查询实战:7种JOIN详解
  • 变量传递总是出错?掌握这3个核心原理,轻松打通R与Python壁垒
  • jmeter基础使用方法
  • 直接打开MATLAB,先来点刺激的——搞个巴特沃斯低通滤波器。别被名字吓到,其实就是个能让低频信号通过,高频滚犊子的电路模型。看这段
  • 大模型应用开发核心:构建高效准确的提示词指南
  • OpenAI发布GPT-5.2:是王者归来还是强弩之末?
  • HTTPS DDoS 排查 异常流量到抓包分析
  • 12、Docker与Kubernetes使用指南
  • 行为树优化全攻略(性能翻倍的4个秘密武器)
  • 直流电机双闭环调速系统仿真模型:转速外环与电流内环PI参数整定指南,无静差跟踪实现功能介绍
  • 滑膜控制下的差动制动防侧翻稳定系统设计与仿真验证:横摆力矩分配策略及其实车测试分析
  • 模型压缩技术详解:剪枝、量化与知识蒸馏,让你的大模型轻量化部署
  • Iridescent:Day23
  • Laravel 13多模态权限实现技巧(99%的开发者忽略的关键细节)
  • 测试数据自动生成方法:策略、实施与最佳实践
  • 【医疗数据安全防线】:如何用PHP构建自动备份体系
  • 【R-Python模型融合实战】:揭秘跨平台建模结果验证的5大核心步骤
  • 从田间到R控制台,方差分析如何改变传统农业决策?
  • 基于comsol的多层冻土地基冻涨模型研究:低温热流固三场耦合效应的固体力学模拟
  • 2025年最新阿勒泰地区道路矢量数据
  • 设计模式[10]——外观模式一分钟彻底说清楚