我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 指令栈 >

多寄存器加载存储指令的8种模式

归档日期:06-22       文本归类:指令栈      文章编辑:爱尚语录

  当堆栈指针指向最后压入堆栈的数据时,称为满堆栈(Full Stack);

  当堆栈指针指向下一个将要放入数据的空位置时,称为空堆栈(Empty Stack)。

  同时,根据堆栈的生成方式,又可以分为递增堆栈(Ascending Stack)和递减堆栈(DecendingStack)。

  当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈。

  这样就有四种类型的堆栈工作方式,ARM 微处理器支持这四种类型的堆栈工作方式,

  ◎ Full descending 满递减堆栈FD 堆栈首部是高地址,堆栈向低地址增长。栈指针总是指向堆栈最后一个元素(最后一个元素是最后压入的数据)。 ARM-Thumb过程调用标准和ARM、Thumb C/C++ 编译器总是使用Full descending 类型堆栈。

  ◎ Full ascending 满递增堆栈FA 堆栈首部是低地址,堆栈向高地址增长。栈指针总是指向堆栈最后一个元素(最后一个元素是最后压入的数据)。

  ◎ Empty descending 空递减堆栈ED 堆栈首部是高地址,堆栈向低地址增长。栈指针总是指向下一个将要放入数据的空位置。

  ◎ Empty ascending 空递增堆栈EA 堆栈首部是低地址,堆栈向高地址增长。栈指针总是指向下一个将要放入数据的空位置。

  在ARM中,一般是满堆栈,堆栈生长方向是从上向下递减的(51相反为递增),在操作系统的一直过程中,与CPU相关部分的一直肯定会涉及到堆栈生长方向的定义。

  arm堆栈的组织结构是 满栈降 的形式,满栈即sp是要停留在最后一个进栈元素,降:就是堆栈的增长方向是从高地址向低地址发展。 arm对于堆栈的操作一般采用 LDMFD(pop)和STMFD (push) 两个命令。 以前困惑的就是STMFD 命令 对于操作数是按照什么顺序压栈的

本文链接:http://egao-p.com/zhilingzhan/54.html