首页新闻找找看学习计划

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

0
悬赏园豆:100 [已解决问题] 解决于 2019-02-08 16:39

图中用红圈圈起来的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
FDProcess的主页 FDProcess | 初学一级 | 园豆:78
提问于:2019-01-23 12:59
< >
分享
最佳答案
0

加载ELF文件的时候出错了,自己的问题,不是GCC的问题。

FDProcess | 初学一级 |园豆:78 | 2019-02-08 16:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册