四种栈模型
2026/6/30 4:21:15 网站建设 项目流程

四种栈模型,

满栈减,Full Descending

满栈增,Full Ascending

空栈减,Empty Descending

空栈增,Empth Ascending

增/减:ascending/descending,是针对压栈的时候,入栈的时候地址是变大还是变小定义的。

满栈/空栈:满栈是先移动sp指针在存储数据,空栈是先存储数据在移动sp指针.

  • 满栈:SP 指着最后一个被放进去的有效数据(“脚”踩在货物上)。

  • 空栈:SP 指着下一个将要放数据的空位置(“手”指着空货架)。

  • FD(满递减):压栈用 STMDB,出栈用 LDMIA。(匹配)

  • FA(满递增):压栈用 STMIB,出栈用 LDMDA。

  • ED(空递减):压栈用 STMDA,出栈用 LDMIB。

  • EA(空递增):压栈用 STMIA,出栈用 LDMDB。

栈模型英文全称压栈指令 (存储)出栈指令 (加载)指针变化逻辑
满递减 (FD)Full DescendingSTMDBLDMIA先减后存 / 先取后加
满递增 (FA)Full AscendingSTMIBLDMDA先加后存 / 先取后减
空递减 (ED)Empty DescendingSTMDALDMIB先减后存 / 先加后取
空递增 (EA)Empty AscendingSTMIALDMDB先存后加 / 先减后取

满栈:sp指针指向栈顶

空栈:sp指针指向栈底

这四个后缀决定了基址寄存器(如 SP)如何变化以及变化发生在传输前还是传输后

后缀全称指针变化先操作还是先变化适用场景
IAIncrement After地址递增先传输数据,指针再 +4出栈(Pop)、正向遍历数组
IBIncrement Before地址递增指针先 +4,再传输数据正向遍历(较少用)
DADecrement After地址递减先传输数据,指针再 -4逆向遍历(较少用)
DBDecrement Before地址递减指针先 -4,再传输数据压栈(Push)、逆向填充

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询