Lowlevel

Lowlevel => Softwareentwicklung => Thema gestartet von: FlorianN am 21. October 2012, 17:51

Titel: C-Programm mit OS verknüpfen
Beitrag von: FlorianN am 21. October 2012, 17:51
Hallo,
ich habe ein lauffähiges OS (es gibt eines string aus, mehr nicht) und ein C-Programm welches ich mit meinem OS verknüpfen will. d.h. Ich will das einfach nur ein C-Programm welches z.B. auch einen String ausgibt laufen lassen.

Mein erstes Problen ist schon dieses, wie ich es Compilieren soll. Mit NASM (wie mein ursprüngliches OS) oder mit GCC?

Und wie soll ich den ASM-Kern (den ich gern behalten würde...) sagen, dass er das C-Programm (bzw. eine Methode im C-Prog.) ausfühern soll?


Danke, Florian
Titel: Re: C-Programm mit OS verknüpfen
Beitrag von: markusb. am 21. October 2012, 19:19
in deinen kernel schreibst du
[EXTERN name_der_C_Methode]
call name_der_C_Methode

damit rufst du eine Methode auf, welche name_der_C_Methode heißt.
Diese implementierst du in C.

die Assemblerdatei kompilierst du am besten so:
nasm -felf -o kernel.o kernel.asm

In C machst du folgendes:
void name_der_C_Methode()
{
    //rufe textausgabe funktion auf
}
ich kompiliere immer mit:
gcc -m32 -fno-builtin -fno-leading-underscore -fno-strict-aliasing -fno-stack-protector -Wall -O0 -c -g -o ausgabe.o ausgabe.c

diese beiden Sachen linkst du noch zusammen.
ld -melf_i386 -Tlinkerscript.ld -o kernel ausgabe.o kernel.o
das linkerskript musst du noch erstellen.
Das solltest du aber eigentlich schon haben, wenn du einen (multiboot) Kernel hast.

Achja: die Textausgabefunktion kannst du auch über C implementieren.

Was mir jetzt gerade noch einfällt: du müsstest in C bekannt geben, dass die Textausgabefunktion eine ASM funktion ist.
Titel: Re: C-Programm mit OS verknüpfen
Beitrag von: kevin am 22. October 2012, 10:59
Mein erstes Problen ist schon dieses, wie ich es Compilieren soll. Mit NASM (wie mein ursprüngliches OS) oder mit GCC?
Um ein C-Programm zu kompilieren, braucht man einen C-Compiler. gcc ist einer, nasm nicht.

Zitat
Und wie soll ich den ASM-Kern (den ich gern behalten würde...) sagen, dass er das C-Programm (bzw. eine Methode im C-Prog.) ausfühern soll?
Wenn du den C-Code in den Kernel einbauen willst, siehe markusb. Ansonsten http://www.lowlevel.eu/wiki/Teil_8_-_Ein_erstes_Programm.
Titel: Re: C-Programm mit OS verknüpfen
Beitrag von: FlorianN am 22. October 2012, 16:24
Danke,
ich versuche es gleich einmal!
Titel: Re: C-Programm mit OS verknüpfen
Beitrag von: FlorianN am 22. October 2012, 18:33
 :-D :-D Super!  :-D :-D Es klappt!

Danke