Arm LDM和STM的寻址方式

A32指令集中包含多数据传输指令LDM和STM,也就是单条指令可以传输多个寄存器的值与内存交互,这对于数据块传输以及寄存器的压入栈很有帮助。LDM和STM指令可分别用于实现堆栈的pop和push操作。对于堆栈操作,基寄存器通常是堆栈指针(SP)。

LDM和STM可以与几种类型的堆栈后缀一起使用,形成不同的寻址模式。

  • Descending:堆栈向下增长,从一个高地址开始,并进展到一个较低的地址(降序堆栈);
  • Ascending:堆栈向上增长,从一个低地址开始,并进展到一个较高的地址(升序堆栈);
  • Full:堆栈指针指向堆栈中非空的最后一项(一个非空堆栈) ;
  • Empty:堆栈指向堆栈中的下一个可用空间(一个空堆栈);

为了方便程序员,可以使用面向堆栈的后缀来代替自增或自减。下表展示了面向堆栈的后缀及其等效的寻址模式后缀:

下图为FD/ED/FA/EA模式的示意。

下表列出了LDM和STM带有堆栈后缀的指令:

下表列出了不同寻址模式如何计算指令地址。

相关推荐

  1. 【汇编】指令系统方式

    2024-01-18 12:26:05       38 阅读
  2. 常见数据方式

    2024-01-18 12:26:05       29 阅读
  3. arm方式

    2024-01-18 12:26:05       60 阅读
  4. 汇编:保护模式下方式

    2024-01-18 12:26:05       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-18 12:26:05       91 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-18 12:26:05       97 阅读
  3. 在Django里面运行非项目文件

    2024-01-18 12:26:05       78 阅读
  4. Python语言-面向对象

    2024-01-18 12:26:05       88 阅读

热门阅读

  1. ARM 1.17

    ARM 1.17

    2024-01-18 12:26:05      52 阅读
  2. 2023 SCD目录

    2024-01-18 12:26:05       36 阅读
  3. Linux内核--网络协议栈(三)sk_buff介绍

    2024-01-18 12:26:05       49 阅读
  4. Spring Boot常用注解

    2024-01-18 12:26:05       64 阅读
  5. css 边框渐变

    2024-01-18 12:26:05       53 阅读
  6. C# 使用多线程,关闭窗体时,退出所有线程

    2024-01-18 12:26:05       57 阅读
  7. 鸿蒙系列--数据管理

    2024-01-18 12:26:05       45 阅读
  8. 前端注释规范

    2024-01-18 12:26:05       64 阅读
  9. 组件中写选项的顺序(vue的问题)

    2024-01-18 12:26:05       52 阅读
  10. 【技术选型】clickhouse vs starRocks

    2024-01-18 12:26:05       71 阅读
  11. 【排序算法】自顶向下的归并排序

    2024-01-18 12:26:05       44 阅读