Hallo Leute,
ich beschäftige mich gerade mit 16 bit Betriebssystemen. Auf Grundlage der Ausgabe 1 (
http://www.lowlevel.eu/wiki/Ausgabe_1) hab ich selbst angefangen ein schlichtes OS mit nasm zu schreiben. Die gesamte api in Assemblern zu schreiben ist natürlich sehr zeitaufwändig und fehleranfällig, deswegen hab' ich mich nach einem C Compiler für den 8086 umgesehen und bin da auf bcc gestoßen. Das Problem ist jetzt nur, dass ich für bcc nicht gerade eine umfangreiche Dokumentation gefunden habe. Link dazu:
http://manpages.ubuntu.com/manpages/precise/en/man1/bcc.1.htmlDas ist auch schon das Problem, ich will einfach meinen Kernel von meinen Bootloader aufrufen. Dafür muss der Kernel natürlich als standalone compiliert sein und ich habe (fast) kein Plan wie ich den Compiler benutzen soll, da er so dürftig Dokumentiert ist. Das zweite Problem ist, das ich auch keinen blassen Schimmer habe, wie der inline-Assembler funktioniert... Kann natürlich auch sein, dass mein Ich-google-mal-alles-skill einfach total schlecht ist
Ich bin natürlich auch für andere 16 bit C Compiler offen, wenn es da welche für Ubuntu 12.04 gibt.
So weit bin ich bis jetzt:
asm "jmp _kmain";
void kputs(char *s)
{
while (*s) {
asm "mov ah, 0x0E";
asm "mov si, _s";
asm "mov al, [si]";
asm "mov bx, 0x0007";
asm "int 0x10";
s++;
}
}
void kmain()
{
kputs("Test.");
asm "cli";
asm "hlt";
}
Compilieren verläuft wie folgend:
$ bcc -Ms kernel.c
kernel.c:8.15: error: need ')'
kernel.c:8.15: error: kputs already declared
kernel.c:8.19: error: s not in argument list
kernel.c:8.19: error: need ';'
kernel.c:8.19: error: need '{'
kernel.c:8.19: error: bad expression
kernel.c:9.1: error: need ';'
kernel.c:eof: error: need '}'
Gruß vinz