ARM寻址方式——堆栈寻址

来源:本站
导读:目前正在解读《ARM寻址方式——堆栈寻址》的相关信息,《ARM寻址方式——堆栈寻址》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《ARM寻址方式——堆栈寻址》的详细说明。
简介:本文主要介绍ARM寻址方式中的堆栈寻址,感兴趣的朋友可以看看。

从内存管理的角度看,堆栈时一块用于保存数据的连续内存,也就是一种按特定顺序进行数据存取的存储区,这种特定的顺序可归纳为“后进先出”或“先进后出”。指向堆栈的地址寄存器成为堆栈指针,堆栈的访问时通过堆栈指针来实现的。

堆栈既可以向下增长,也可以向上增长,这就是堆栈的2种增长方式。

向上增长:即访问寄存器时,存储器的地址向高地址方向增长,称为递增堆栈。

向下增长:即访问存储器时,存储器的地址向低地址方向增长,称为递减堆栈。

满堆栈:堆栈指针指向最后压入堆栈的数据或者指向第一个要读出的数据。

空堆栈:堆栈指针指向最后压入堆栈的数据的上一个或下一个空位置,或者指向第一个要读出的数据的上一个或下一个空位置。

根据以上的描述说明,堆栈有4种形式,分别是由递增、递减、满栈、空栈组成的所有组合。ARM处理器支持者4种形式的堆栈。

满递增:堆栈随着寄存器地址的增大而向上增长,基址寄存器指向存储有效数据的最高地址或者指向第一个要读出的数据位置。

空递增:堆栈随着存储器地址的增大而向上增长,基址寄存器指向存储有效数据的最高地址的上一个空位置或者指向将要读出的第一个数据位置的上一个空位置。

满递减:堆栈随着存储器地址的减小而向下增长,基址寄存器指向存储有效数据的最低地址或者指向第一个要读出的数据位置。

空递减:堆栈随着存储器地址的减小而向下增长,基址寄存器指向最后压入堆栈的数据的下一个空位置或者指向将要读出的第一个数据位置的下一个空位置。

在ARM指令中,堆栈寻址通过Load/Store指令来实现。

例如:

STMFD SP! {R1-R7,LR} ;将R1-R7,LR入栈

LSMFD SP! {R1-R7,LR} ;数据出栈,放入R1~R7,LR寄存器

在Thumb指令中,堆栈寻址通过PUSH/POP指令来实现,例如:

PUSH {R1-R7,LR} ; 将R1-R7,LR入栈

POP {R1-R7,PC} ;数据出栈,放入R1~R7,PC寄存器

提醒:《ARM寻址方式——堆栈寻址》最后刷新时间 2024-03-14 01:01:52,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《ARM寻址方式——堆栈寻址》该内容的真实性请自行鉴别。