- 论坛徽章:
- 0
|
大家好,又来请教大家了。
之前咨询过大家关于powerpc的一些问题,现在我们板子用uboot引导起来了,我们裁剪了u-boot。
在之后应用编程发现一个问题,用汇编语言编写的函数,访问一个已经初始化的全局变量,全局变量在之后在一个C代码函数里修改过,在汇编函数里读取值发现全局变量的值还是初始化的。
过程如下:
unsigned long globala=111;//全局变量
在一个C函数里:
void A()
{
...
修改globala =200;
...
}
在一个B汇编函数里:
读取修改的全局变量:
.globl global
global:
mflr r27
lis r3,globala@ha
lwz r3,globala@l(r3)
bl printgl //打印globala的值,发现还是111,而不是200,
mtlr r27
blr
我们认为和got全局偏移量表有关,是不是全局变量放在偏移量表里面了,所以没法访问:
然后汇编修改如下:
lis r3,globala@got@ha
lwz r3,globala@got@l(r3)
发现还是111.而不是200??
想请教下大家。 |
|