13

Dskpimc? · 1月22日

Arm LDM和STM的寻址方式

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

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

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

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

image.png

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

image.png

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

image.png

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

image.png

作者:谷公子
文章来源:CSDN

推荐阅读

更多IC设计干货请关注IC设计专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
19515
内容数
1301
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息