Der Code den ich oben gepostet hab ist natürlich nicht vollständig. Die Struktur aout_symbol_table_t fehlt zum Beispiel, daher die Compiler Fehler.
Hier der restliche Code (muss vor die multiboot Strukur):
typedef struct aout_symbol_table
{
unsigned long tabsize;
unsigned long strsize;
unsigned long addr;
unsigned long reserved;
} aout_symbol_table_t;
typedef struct elf_section_header_table
{
unsigned long num;
unsigned long size;
unsigned long addr;
unsigned long shndx;
} elf_section_header_table_t;
Der Entry Point ist die Adresse im Kernel zu der der Bootloader springt, dort fängt also der eigentlich Code an. In einem C-Programm ist das die main()-Funktion. Wenn dein Entrypoint also in einem Assembler File liegt heißt das, dass die ersten Befehle die ausgeführt werden noch in ASM geschrieben wurden und du erst zum C-Teil springen musst.
Die Magic Number... tja... hm.. keine Ahnung, maximal zur Kontrolle, aber wirklich wichtig ist die nicht.