日志档案

发表于 2008-2-28 21:41:58

1

标签: 无标签

ARM7的栈

问题: ARM7的栈?

ARM7中寄存器对应表

R0 R0 
.. .. 
R9 R9 
R10 ---> SL 
R11 ---> FP FRAME POINTER 
基址指针指向堆栈栈底 
R12 ---> IP 
R13 ---> SP STACK POINTER 
堆栈指针的寄存器(SP)指向堆栈的栈顶 
R14 ---> LR 
R15 ---> PC 

栈的图例(stack-->arm7.cpp): 

ARM7gcc 2.95/2.97编译下使用r11寄存器作为函数栈底指针,r13为当前函数栈顶指针 

一个典型的函数栈信息结构为: 

内存高地址 
------------------------------ 
当前函数的参数 | 
--- ------------------------------<--------
上一个函数栈顶(r12) 
进入函数体后的PC(无用) | 
------------------------------ <--------
栈底(r11) 
 | 当前函数返回地址 | 
------------------------------ 
 | 上一个函数13寄存器值 | 
------------------------------ 
 | 上一个函数r11寄存器值 | 
------------------------------ 
 | 当前函数的局部变量 | 
------------------------------ 
传递给下一函数的参数 | 
--- ------------------------------ <--------
栈顶(r13) 
内存低地址 

(注意直接取r11值将取PC值,而非函数返回地址)

系统分类: 软件开发   |   用户分类: ARM   |   来源: 转贴   |   【推荐给朋友】

    阅读(312)    回复(1)  

投一票您将和博主都有获奖机会!