是否有直接方法可以在“C”函数中引用stack_start和stack_end符号的值?我可以使用一些汇编程序来读取每个符号,并将其放置到一个变量中,该变量被赋予了“used”属性。例如。
static __attribute__((used)) UI_32 StkStart;
__asm__
(
"LDR R0, =__stack_start__ \n"
"LDR R1, =StkStart\n"
"STMIA.W R1, {R0}\n"
);
有什么办法避免在这里使用成员吗?
我需要这样做的原因是,我的堆栈区域被初始化为启动模块中的特定模式,为了确定使用了多少堆栈,我可以遍历堆栈内存,检查对原始模式的更改。
发布于 2013-05-23 07:04:56
C中没有直接访问stack_start
和stack_en
d符号的方法。您必须使用汇编代码来访问堆栈内存。
发布于 2013-05-23 09:35:40
也许可以大致了解堆栈的使用情况:
#include <stdio.h>
char *stack_top;
void f() {
int stack;
char tab[1 << 20];
char stack_end;
stack = stack_top - &stack_end;
printf("%d.\n", stack);
}
void main() {
char dummy;
stack_top = &dummy;
f();
exit(0);
}
样本运行:
$ gcc stack.c -o stack
$ ./stack
1048624.
https://stackoverflow.com/questions/16707507
复制相似问题