sun博客

记录点滴!

1 栈:栈是一种具有后进先出的数据组织方式,也就是说后存放的先取出,先存放的后取出。栈底是第一个进栈的数据所处位置,栈顶是最后一个数据进栈所处的位置。

2 满/空栈

  根据SP指针指向的位置,栈可以分为满栈和空栈。

  满栈:当堆栈指针总是指向最后压入堆栈的数据

  空栈:当堆栈指针总是指向下一个将要放入数据的空位置

push,同义词,stmfd

stm :store multiple data(存储多个数据)即push

pop,同意词, ldmfd

ldm:load multiple data(加载多个数据到内存) 即pop

fd:full,desc(满减栈)

一种是4种出入栈方式:

1. 满递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向内含有效数据项的最高地址。

指令如 LDMFA,STMFA 等。

2. 空递增:堆栈通过增大存储器的地址向上增长,堆栈指针指向堆栈上的第一个空位置。

指令如 LDMEA,STMEA 等。

3. 满递减:

堆栈通过减小存储器的地址向下增长,堆栈指针指向内含有效数据项的最低地址。

指令如 LDMFD,STMFD 等。

4. 空递减:堆栈通过减小存储器的地址向下增长,堆栈指针指向堆栈下的第一个空位置。

指令如 LDMED,STMED 等。

push执行时使用 事前递减方式 (先减再入数据),第一步,创建栈段。如:

push {r0-r7,lr}

sp=sp-9*4(创建栈段,供存储数据)

LDMFD,pop指令的寻址方式为事后递增方式(先出数据再减)

发表评论

邮箱地址不会被公开。 必填项已用*标注