首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >__stack_size__,C中的__stack_end__符号

__stack_size__,C中的__stack_end__符号
EN

Stack Overflow用户
提问于 2013-05-23 06:59:04
回答 2查看 1.1K关注 0票数 4

是否有直接方法可以在“C”函数中引用stack_startstack_end符号的值?我可以使用一些汇编程序来读取每个符号,并将其放置到一个变量中,该变量被赋予了“used”属性。例如。

代码语言:javascript
运行
复制
static __attribute__((used)) UI_32 StkStart;

__asm__
(
    "LDR R0, =__stack_start__ \n"
    "LDR R1, =StkStart\n"
    "STMIA.W R1, {R0}\n"
);

有什么办法避免在这里使用成员吗?

我需要这样做的原因是,我的堆栈区域被初始化为启动模块中的特定模式,为了确定使用了多少堆栈,我可以遍历堆栈内存,检查对原始模式的更改。

EN

回答 2

Stack Overflow用户

发布于 2013-05-23 07:04:56

C中没有直接访问stack_startstack_end符号的方法。您必须使用汇编代码来访问堆栈内存。

票数 1
EN

Stack Overflow用户

发布于 2013-05-23 09:35:40

也许可以大致了解堆栈的使用情况:

代码语言:javascript
运行
复制
#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);
}

样本运行:

代码语言:javascript
运行
复制
$ gcc stack.c -o stack
$ ./stack
1048624.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16707507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档