问题: 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值,而非函数返回地址)
用户137602 2008-5-2 15:59
用户384472 2007-10-10 13:29
用户388828 2007-8-15 17:29
板子我做过好几块,也在总结学习中,不过我的板子都不大,还没有遇到过由板子引入的噪声
能具体说一下么?谢谢
用户4160 2007-7-20 20:06