在“C”中使用链接器命令文件变量的绝对值 代码
我有一个链接器命令文件,它将堆栈的顶部地址分配给一个变量,
_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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试
Try
我相信最自然的[即:正确]的声明方法是基于将堆栈视为内存中的数组的概念,其中堆栈指针是该数组中的一个位置:
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:
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.