我有一个链接器命令文件,它将堆栈的顶部地址分配给一个变量
_stack = . + 0x80000;
我想在“c”程序中使用这个地址——我想将堆栈复制到另一个位置,然后更新堆栈指针以指向新位置,然后对原始 RAM 库进行破坏性内存测试。
我发现如果我做类似的事情
extern u32 *_stack;
myFunction(_stack);
然后该函数似乎传递了存储在堆栈位置的值
lwz r3,0(r8)
而不是堆栈本身的地址。任何人都可以帮忙吗?
尝试
extern u32 _stack;
U32 * stackPtr;
stackPtr = &_stack;
我相信最自然的[即:正确]声明方式是基于将堆栈视为内存中的数组的概念,堆栈指针是该数组中的一个位置:
extern U32 _stack[];
U32 *stackPtr;
stackPtr = _stack;
我的函数(&_stack);应该将变量 * _stack* 的地址传递给 myFunction。否则,它将传递变量_stack中包含的值。