> 信息中心 >

疑似GCC的BUG:全局变量寻址错误

来源:互联网 编辑:王阿强

有网友碰到过这样的问题:疑似GCC的BUG:全局变量寻址错误,问题详细内容为:

图中用红圈圈起来的C语句对应的汇编就是另一个红圈圈起来的汇编语句
函数原型

extern void_asm_allocOnePage(unsigned int linearAddress);

函数的实现在另一个汇编文件中 _asm_coreFun.asm

按照代码逻辑的话,图中栈顶的值应该为0x80400000,但是实际上是0x00000000,如果将变量“coreNextAddress”改为main函数的静态变量,会出现同样的问题,似乎静态区变量的寻址都有问题。本人水平有限,不知到底发生了什么。请问是不是GCC的BUG,且不知如何解决这个问题,希望有大神答疑解惑。

P S:不知信息有没有给全,如果需要更多的信息麻烦回复一下。

编译链接命令

gcc -m32 -I /mnt/d/MCOS/include -c -fno-stack-protector -o core/ini.o core/ini.c nasm -f elf -o core/_asm_sysCall.o core/_asm_sysCall.asm nasm -f elf -o core/_asm_coreFun.o core/_asm_coreFun.asm ld -m elf_i386 -s -e main -Ttext 0x80010500 -o core/ini.bin core/ini.o core/_asm_sysCall.o core/_asm_coreFun.o core/_asm_interrupt.o GCC C语言 汇编 ,我搜你通过互联网收集了相关的一些解决方案,希望对有过相同或者相似问题的网友提供帮助,具体如下:

解决方案1:
加载ELF文件的时候出错了,自己的问题,不是GCC的问题。

FB中的形参和静态变量可以在FB中被直接寻址吗

1、fb2中定义stat变量比如motor1,数据类型为fb1,fb1中有静态变量res,则fb2中:L motor.res2、那是你的都是全局变量, 1.不用设置,FB1会有对应的背景数据块,直接在FB2中使用...

AVR-gcc中如何把变量定义在指定的地址?

char *p=0x1000; *p=0x01; 以上为例,将0x01这一数值,存入0x1000地址中。

为什么定义的静态全局变量用在函数里和在函数里定义定义的静...

自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。 3>当static用来... 如对于: const char * GetString(void); 如下语句将出现编译错误: char *str = GetString...

单片机C语言怎么声明一个可以位寻址的变量

是这个样子的,你只要声明了位变量,比如bit a;而且这个变量是全局变量,或者是函数内部的静态变量,那么,这个位变量的地上就恒不变了,只是地址是多少这个是编译器随机分配的...

单片机Keil C51 C语言多文件如何使用全局位变量?跪拜!!

bdata m; sbit x=m^1; 然后在另一个文件里声明: extern bdata m;(如果不使用m可以不声明。) extern bit x; 这样就可以使用了。如果变量较多,建议楼上的方法,用全局头文...

汇编全局变量使用的是堆还是栈,哪个更快

堆,只是程序甚至系统级的一种访问顺序关系。 机器指令这个层次上,没有堆。 机器指令层次上,只有两种内存访问模式:栈式访问,线性寻址,它们都基于分段。 这两种访问方式,...

[请教]西门子SIMOTION系统OPC获取变量的问题

你是不是导出opc数据后又在scout中修改或者删除/增加过变量?如果是的话监视的变量很可能对不上号,因为变量不是以名称寻址的。

单片机 定义bit bdata是什么意思

在单片机C语言中,bit是新增的一个关键词,它是用来定义一个"位变量" bdata是把变量定义到数据RAM的可位寻址区,即51系列的20H~2FH单元中,最后bitflag应该是bit flag(和关...

51汇编中如何利用C51定义的结构体变量

没用过汇编,以下纯属现象:得到这个全局变量的地址,然后通过增加偏移量的方式访问结构体的成员。或者直接得到每个成员的地址,然后参与运算。或者是在定义这个全局变量的时...


请注意,本站信息均收集自互联网,相关信息仅供参考,医疗等重要信息请以正规途径为最终意见,本站不承担任何责任!

www.wosoni.com false 互联网 http://www.wosoni.com/blogcnk/mm/ccdjde.html report 2172 解决方案1:加载ELF文件的时候出错了,自己的问题,不是GCC的问题。

热门图片