【发布时间】:2010-12-20 15:23:21
【问题描述】:
我目前正在 Linux 上使用 ARM 程序集作为学习练习。我正在使用“裸”程序集,即没有 libcrt 或 libgcc。谁能指出我在调用第一条指令之前在程序开始时堆栈指针和其他寄存器将处于什么状态的信息?显然 pc/r15 指向 _start,其余的似乎初始化为 0,但有两个例外; sp/r13 指向一个远离我的程序的地址,而 r1 指向一个稍高的地址。
所以对于一些扎实的问题:
- r1 的值是多少?
- sp中的值是内核分配的合法栈吗?
- 如果不是,分配堆栈的首选方法是什么?使用 brk 还是分配静态 .bss 部分?
任何指针将不胜感激。
【问题讨论】: