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

发布于 2024-07-06 14:32:10 字数 363 浏览 8 评论 0原文

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

_stack = . + 0x80000;  

我想在“c”程序中使用该地址 - 我想将堆栈复制到另一个位置,然后更新堆栈指针以指向新的位置在对原始 RAM 组进行破坏性内存测试之前先确定该位置。

我发现,如果我执行类似的操作

extern u32 *_stack;  
myFunction(_stack);

,那么该函数似乎会传递存储在堆栈位置的值

lwz r3,0(r8)

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

I have a linker command file that assigns the top address of the stack into a variable

_stack = . + 0x80000;  

I want to use this address in a 'c' program - I want to copy the stack to another location and then update the stack pointer to point to the new location before doing a destructive memory test on the orginal bank of RAM.

I'm finding that if I do something like

extern u32 *_stack;  
myFunction(_stack);

Then the function seems to get passed the value stored at the stack location

lwz r3,0(r8)

Rather than the address of the stack itself.
Can anyone help?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

莫多说 2024-07-13 14:32:10

尝试

extern u32 _stack;
U32 * stackPtr;
stackPtr = &_stack;

Try

extern u32 _stack;
U32 * stackPtr;
stackPtr = &_stack;
眼藏柔 2024-07-13 14:32:10

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

extern U32 _stack[];
U32 *stackPtr;
stackPtr = _stack;

I believe the most natural [ie: correct] way to declare this is based on the notion of thinking of the stack as an array in memory with the stack pointer being a location within that array:

extern U32 _stack[];
U32 *stackPtr;
stackPtr = _stack;
抚笙 2024-07-13 14:32:10

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

myFunction(&_stack); should pass myFunction the address of the variable * _stack*.
Else, it will pass the value contained in the variable _stack.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文