[os]Problem z pisaniem osa

0

Witam. Chciałbym napisać własny system operacyjny ale natrafiłem na dziwny problem. Korzystam z kursów, które są na 4programmers. Bootloader jest w asemblerze. Jądro miało być w C. Gdy zrobię jeden plik C to wszystko działa, ale jak zlinkuje kilka plików C i odwołuje się z funkcji startowej kernela do funkcji z innego pliku to system nie działa. Natomiast jak zrobię mapę pamięci i napisze w kodzie coś w stylu:

void (*f2)() = (void*)0x100e0;

to wywoływanie f2(); działa.
System buduje w ten sposób:

"scripts/nasm" start.asm -f coff -o start.o
gcc kernel.c -O2 -fomit-frame-pointer -nostdinc -fno-builtin -c -o kernel.o
gcc f.c -O2 -fomit-frame-pointer -nostdinc -fno-builtin -c -o f.o
"scripts/ld" -Tlink.ld -Map kernel.map -o bin/kernel.bin start.o kernel.o f.o

"scripts/nasm" boot.asm -f bin -o bin/boot.bin

"scripts/merge" floppy.img bin/boot.bin bin/kernel.bin

Kompiluję na Windowsie XP Pro.
Pozdrawiam

0

plik nagłówkowy z deklaracją funkcji

0

Deklaracja funkcji:

void f();

Cały kod: http://rafalh.ovh.org/os.zip

1 użytkowników online, w tym zalogowanych: 0, gości: 1