Hi,
ich habe das Tutorial von TJ durchgearbeitet und mit einem anderen Bootloader verbunden (TJ's funktionierte bei mir irgendwie nicht). Der Bootloader startet normal, aber der Kernel zeigt einfach nichts an.
Es wird alles fehler- und Warnungsfrei kompiliert.
Woran könnte es liegen ?
Hier der Code:
kernel32.asm
kernel.c
link.txt
Ich hoffe, dass euch die 3 Dateien ausreichen
ich habe das Tutorial von TJ durchgearbeitet und mit einem anderen Bootloader verbunden (TJ's funktionierte bei mir irgendwie nicht). Der Bootloader startet normal, aber der Kernel zeigt einfach nichts an.
Es wird alles fehler- und Warnungsfrei kompiliert.
Woran könnte es liegen ?
Hier der Code:
kernel32.asm
Code: [Auswählen]
[Bits 32]
extern _kernel
global start
global _EnableA20Gate
start:
call _kernel ; siehe kernel.c warum
STOP:
jmp STOP
kernel.c
Code: [Auswählen]
void kernel() // Da main scheinbar ein reserviertes Wort ist
{
int i;
char Text[] = "Welcome to Protected Mode";
char *VideoMem = (char*)0xB8000;
for(i = 0; Text[i] != 0; i++)
{
VideoMem[i] = Text[i];
VideoMem[++i] = 7;
}
}
void memcpy(void *dest, const void *src, int n)
{
int i;
for (i = 0;i <= n;i++)
{
dest = (void*)src;
dest++;
src++;
}
}
link.txt
Code: [Auswählen]
OUTPUT_FORMAT("binary")
INPUT(kernel32.obj ckernel.obj)
ENTRY(start)
SECTIONS
{
.text 0x200 : {
code = .; _code = .; __code = .;
*(.text)
. = ALIGN(1);
}
.data : {
data = .; _data = .; __data = .;
*(.data)
. = ALIGN(1);
}
.bss :
{
bss = .; _bss = .; __bss = .;
*(.bss)
. = ALIGN(1);
}
end = .; _end = .; __end = .;
}
Ich hoffe, dass euch die 3 Dateien ausreichen


Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken


Gespeichert
), wie kann man denn dort den Kernel austauschen ?