Also ich hab jetzt mal versucht das Tutorial mit NASM zu assemblieren..
section multiboot
MB_MODULEALIGN equ 0x0 ; not used
MB_MEMINFO equ 0x0 ; not used
MB_FLAGS equ MB_MODULEALIGN | MB_MEMINFO
MB_MAGIC equ 0x1BADB002
MB_CHECKSUM equ -(MB_MAGIC + MB_FLAGS)
dd MB_MAGIC
dd MB_FLAGS
dd MB_CHECKSUM
section .text
extern init
global _start
_start:
mov esp, kernel_stack
call init
_stop:
cli
hlt
jmp _stop
section .bss
resb 8192 ; 8kB stack
kernel_stack:
Bezüglich der Syntax wird auch nicht gejammert, aber wenn ich den Kernel
boote mit qemu schreibt er mir kein Hello World raus.
Hab am Linkerskript nichts geändert, die ist noch 1:1 gleich wie
hier,
nur die Makefile hab ich entsprechend verändert..
# ...
CC = gcc
AS = nasm
LD = ld
#ASFLAGS = -m32
ASFLAGS = -f elf
#...
%.o: %.S
$(AS) $^ $(ASFLAGS) -f elf -o $@
#$(CC) $(ASFLAGS) -c -o $@ $^
#...
Komm nicht dahinter.. der Multiboot-Header sollte so stimmen. Und auch das Linker-Skript
sollte das Objekt entsprechend aufbauen.
Nur bei
$(AS) $^ $(ASFLAGS) -f elf -o $@
im Makefile bin ich mir nicht ganz sicher, aber es soll schon eine ELF sein oder?
*EDIT:
Okay, ich hab beim Multiboot-Header kein align angegeben.
;...
align 4
dd MB_MAGIC
dd MB_FLAGS
dd MB_CHECKSUM
;...