(Gibt es eine Anleitung?)
Ja gíbt es, z.B. hier (zwar auf Englisch aber egal):
http://wiki.osdev.org/Bare_BonesDa kannst du sehen das in der "loader"-Funktion die Register eax auf die globale Variable "Magic" und ebx auf die globale Variable "mbd" geschrieben werden.
In "kmain" werden diese Variablen dann einfach verwendet.
Du kannst aber auch direkt zu Beginn deiner start.S, also direkt nach dem Multiboot-Header, die beiden Register auf den Stack schieben. Das sähe dann ungefähr so aus:
.section multiboot
#define MB_MAGIC 0x1badb002
#define MB_FLAGS 0x0
#define MB_CHECKSUM -(MB_MAGIC + MB_FLAGS)
.align 4
.int MB_MAGIC
.int MB_FLAGS
.int MB_CHECKSUM
.section .text
.extern Main
.global _start
_start:
mov $kernel_stack, %esp
pushl %eax ; eax auf den Stack schieben
pushl %ebx ; und ebx auch
call Main
Die passende Funktion "Main" sieht dann etwa so aus:
void Main (void* mbt, uint32_t Magic)
{
...
}
Gruß,
Streetrunner