1

我有一个链接器命令文件,它将堆栈的顶部地址分配给一个变量

_stack = . + 0x80000;  

我想在“c”程序中使用这个地址——我想将堆栈复制到另一个位置,然后更新堆栈指针以指向新位置,然后对原始 RAM 库进行破坏性内存测试。

我发现如果我做类似的事情

extern u32 *_stack;  
myFunction(_stack);

然后该函数似乎传递了存储在堆栈位置的值

lwz r3,0(r8)

而不是堆栈本身的地址。任何人都可以帮忙吗?

4

3 回答 3

5

尝试

extern u32 _stack;
U32 * stackPtr;
stackPtr = &_stack;
于 2008-10-09T15:11:45.363 回答
1

我相信最自然的[即:正确]声明方式是基于将堆栈视为内存中的数组的概念,堆栈指针是该数组中的一个位置:

extern U32 _stack[];
U32 *stackPtr;
stackPtr = _stack;
于 2008-10-11T15:48:46.820 回答
0

我的函数(&_stack);应该将变量 * _stack* 的地址传递给 myFunction。否则,它将传递变量_stack中包含的值。

于 2008-10-09T15:10:52.183 回答