在'C'代码中使用链接器命令文件变量的绝对值

spa*_*ers 1 c embedded linker

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

_stack = . + 0x80000;  
Run Code Online (Sandbox Code Playgroud)

我想在'c'程序中使用这个地址 - 我想将堆栈复制到另一个位置,然后在对RAM的原始存储区进行破坏性内存测试之前更新堆栈指针以指向新位置.

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

extern u32 *_stack;  
myFunction(_stack);
Run Code Online (Sandbox Code Playgroud)

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

lwz r3,0(r8)
Run Code Online (Sandbox Code Playgroud)

而不是堆栈本身的地址.有人可以帮忙吗?

Mar*_*som 5

尝试

extern u32 _stack;
U32 * stackPtr;
stackPtr = &_stack;
Run Code Online (Sandbox Code Playgroud)