按栈指针指向有满(Full)/空(Empty),
满 SP指向最后一个压入的数据 ,即先修改sp到指向下一目标位置,再存入相应的值
如:push Rx
[sp] == Rx
空 SP指向下一个空的位置,即先存入相应的值,再修改sp到指向下一目标位置
如: push Rx
pop Rx
[sp] == Rx
根据压栈向栈指针的变量 增/减
增(Ascending) : mov R8,sp; push R8;
R8<sp
减(Descending):
R8>sp
如上得出,有四种类型的栈分别是
FA FD EA ED
ARM中STM LDM +四种类型名即为相应指令
STMFA/LDMFA
STMFD/LDMFD
STMEA/LDMEA
STMED/LDMED
X86 是FD栈