1. 程式人生 > >堆疊PUSH、POP 自測體會

堆疊PUSH、POP 自測體會

ARM處理器小端模式且編譯器是採用“滿遞減”方式,多工指標初始位置如上圖所示。

“滿遞減”:PUSH使得SP遞減,POP使得SP遞增

說明:ARM處理器大部分是採用小端模式的,而且像ADSIARKEIL等對ARM系列的處理器都採用小端模式,且堆疊是採用“滿遞減”方式。

KEIL51的編譯器一般情況下是恰好相反的,8051很多是採用大端模式,而且堆疊是採用“空遞增”方式。

“空遞增”:PUSH使得SP遞增,POP使得SP遞減

KEIL 8051系列的微控制器,大部分是採用大端模式且編譯器是採用“空遞增”方式,多工指標初始位置如上圖所示。

 

 

 

 

 

 

 

32位的ARM處理器的記憶體資料如下圖:

 

以上記憶體內容分佈時,執行POP  {r4pc}

r4=0x78563412

  pc=0xa5853520

即高地址在高位

 

 

8C8051以上記憶體內容分佈時,執行POP  {pc}

Pc=0x0096 POP pc也是高地址放高位,至於其它暫存器,自己沒有測試,但是我猜應該也是一樣的。