一.四种栈
考验大家理解能力的地方来了,专心点,嘿嘿!!
1.满增栈:进栈(先移动指针再入栈,指针往地址增大的方向移动);出 栈(先出栈,栈指针往地址减小的地方移动)。
2.满减栈:进栈(先移动指针再入栈,指针往地址减小的方向移动);出栈(先出栈,栈指针往地址增大的地方移动)。
3.空增栈:进栈(先进栈,栈指针往地址增大的方向移动);出栈(先移动指针再出栈,栈指针往地址减小的方向移动
4.空减栈:进栈(先进栈,栈指针往地址减小的方向移动);出栈(先移动指针再出栈,栈指针往地址增大的方向移动)
二.LDM(多寄存器加载)
1.LDM指令格式
LDM{cond}<模式> Rn{!},reglist{^} ;
!:表示在操作结束后,将最后的地址写回Rn中;
reglist :表示寄存器列表,可以包含多个寄存器,它们使用“,”隔开,如{R1,R2,R6-R9},寄存器由小到大排列;
^:可选后缀。允许在用户模式或系统模式下使用。它有以下两个功能:
1)若op是LDM且寄存器列表包含R15(PC)时,那么除了正常的多寄存器传送外,还将SPSR也复制到CPSR中。这用于异常处理返回,仅在异常模式下使用。
2)数据传入或传出的是用户模式下的寄存器,而不是当前模式的寄存器。