四种栈模型,满栈减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、逆向填充