标签:
无标签
|
问题: 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):
ARM7在gcc 2.95/2.97编译下使用r11寄存器作为函数栈底指针,r13为当前函数栈顶指针
一个典型的函数栈信息结构为:
内存高地址 ------------------------------ | 当前函数的参数 | --- ------------------------------<--------上一个函数栈顶(r12) | 进入函数体后的PC值(无用) | ------------------------------ <--------栈底(r11) 函 | 当前函数返回地址 | ------------------------------ 数 | 上一个函数13寄存器值 | ------------------------------ 堆 | 上一个函数r11寄存器值 | ------------------------------ 栈 | 当前函数的局部变量 | ------------------------------ | 传递给下一函数的参数 | --- ------------------------------ <--------栈顶(r13) 内存低地址
(注意直接取r11值将取PC值,而非函数返回地址) |
系统分类:
软件开发 | 用户分类:
ARM | 来源:
转贴 | 【推荐给朋友】