ARM 堆栈寻址类型区分

文章目录

      • 堆栈指向分类
      • 堆栈指向数据分类
      • 满递增与满递减
      • 空递增与空递减

堆栈指向分类

根据堆栈指针的指向的方向不同,可以划分为向上生成型和向下生成型。

向上生成型:

  • 随着数据的入栈,堆栈的指针逐渐增大,称为:递增堆栈。

向下生成型:

  • 随着数据的入栈,堆栈的指针逐渐减小,称为:递减堆栈。

堆栈指向数据分类

根据堆栈指针是否指向数据,可以划分为满堆栈和空堆栈。

满堆栈:

  • 堆栈指针指向最后压入堆栈的有效数据项。

空堆栈:

  • 堆栈指针指向下一个要存放数据的空位置。

满递增与满递减

用于描述寄存器或内存中的值在递增或递减操作时,增加或减少一个完整的数据单元的大小。

数据单元的大小通常由操作系统或架构规定,可以是字节、字、双字等。

满递增是按照完整的数据单元大小增加,不论数据单元的大小是多少,递增时都会增加整个数据单元的大小。

满递减是按照完整的数据单元大小递减,不论数据单元的大小是多少,递减时都会减少整个数据单元的大小。

假设在堆栈中存储 R0R1R2 寄存器的值,按照满递增与满递减存储,如下所示:

ARM 堆栈寻址类型区分_第1张图片

先进行递增或者递减,然后再存入数据。

空递增与空递减

同样也是用于描述寄存器或内存中的值在递增或递减操作时,增加或减少一个空间单元的大小。

空间单元的大小可能不是完整的数据单元大小,而是根据指定的步长进行增加或减少。

空递增是按照指定的步长或空间单元大小增加,可以根据需要自定义递增步长。

空递减是按照指定的步长或空间单元大小递减,可以根据需要自定义递减步长。

直接指向存入的数据。

你可能感兴趣的:(嵌入式原理与设计,嵌入式)