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

在“C”代码中使用链接器命令文件变量的绝对值,c,embedded,linker,C,Embedded,Linker,我有一个链接器命令文件,它将堆栈的顶部地址分配到一个变量中 _stack = . + 0x80000; 我想在“c”程序中使用此地址-我想将堆栈复制到另一个位置,然后在对原始RAM库进行破坏性内存测试之前更新堆栈指针以指向新位置 我发现如果我这样做 extern u32 *_stack; myFunction(_stack); 然后,函数似乎传递了存储在堆栈位置的值 lwz r3,0(r8) 而不是堆栈本身的地址。 有人能帮忙吗?myFunction&\u stack;应向myFu

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

_stack = . + 0x80000;  
我想在“c”程序中使用此地址-我想将堆栈复制到另一个位置,然后在对原始RAM库进行破坏性内存测试之前更新堆栈指针以指向新位置

我发现如果我这样做

extern u32 *_stack;  
myFunction(_stack);
然后,函数似乎传递了存储在堆栈位置的值

lwz r3,0(r8)
而不是堆栈本身的地址。 有人能帮忙吗?

myFunction&\u stack;应向myFunction传递变量*_stack*的地址。 否则,它将传递包含在变量_堆栈中的值

myFunction&\u堆栈;应向myFunction传递变量*_stack*的地址。 否则,它将传递包含在变量_堆栈中的值

试试看

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


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

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

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

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