...
This commit is contained in:
@@ -5,8 +5,8 @@
|
||||
- `make`
|
||||
- `grub`
|
||||
- `mtools`
|
||||
- `gcc`
|
||||
- `ld`
|
||||
- `i386-elf-gcc`
|
||||
- `i386-elf-ld`
|
||||
|
||||
## Building
|
||||
|
||||
|
||||
10
makefile
10
makefile
@@ -1,8 +1,8 @@
|
||||
CC = gcc
|
||||
LD = ld
|
||||
CC = i386-elf-gcc
|
||||
LD = i386-elf-ld
|
||||
|
||||
CFLAGS = -m32 -ffreestanding -fno-pie -fno-stack-protector -fno-builtin -Wall -Wextra -Werror -Wshadow -std=c23
|
||||
LDFLAGS = -m elf_i386 -Ttext 0x100000 -nostdlib
|
||||
CFLAGS = -m32 -ffreestanding -fno-builtin -Wall -Wextra -Werror -Wshadow -std=c23
|
||||
LDFLAGS = -m elf_i386
|
||||
|
||||
all: .build/nub-os.iso
|
||||
|
||||
@@ -19,7 +19,7 @@ build-dir:
|
||||
grub-mkrescue -o .build/nub-os.iso .build/iso/
|
||||
|
||||
.build/kernel: build-dir .build/boot.o .build/kernel.o .build/vga.o
|
||||
$(LD) $(LDFLAGS) -Ttext 0x100000 -o .build/kernel .build/boot.o .build/kernel.o .build/vga.o
|
||||
$(LD) $(LDFLAGS) -T src/boot.ld -o .build/kernel .build/boot.o .build/kernel.o .build/vga.o
|
||||
|
||||
.build/kernel.o: build-dir src/kernel.c
|
||||
$(CC) $(CFLAGS) -c -o .build/kernel.o src/kernel.c
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
%define LEN header_end - header_start
|
||||
%define CHECKSUM -(MAGIC + ARCH + LEN)
|
||||
|
||||
section .multiboot2
|
||||
header_start:
|
||||
align 4
|
||||
dd MAGIC
|
||||
@@ -25,7 +26,7 @@ global _start
|
||||
_start:
|
||||
mov esp, stack_top
|
||||
call kernel_main
|
||||
hang:
|
||||
cli
|
||||
hang:
|
||||
hlt
|
||||
jmp hang
|
||||
28
src/boot.ld
Normal file
28
src/boot.ld
Normal file
@@ -0,0 +1,28 @@
|
||||
ENTRY(_start)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
. = 2M;
|
||||
|
||||
.text BLOCK(4K) : ALIGN(4K)
|
||||
{
|
||||
*(.multiboot2)
|
||||
*(.text)
|
||||
}
|
||||
|
||||
.rodata BLOCK(4K) : ALIGN(4K)
|
||||
{
|
||||
*(.rodata)
|
||||
}
|
||||
|
||||
.data BLOCK(4K) : ALIGN(4K)
|
||||
{
|
||||
*(.data)
|
||||
}
|
||||
|
||||
.bss BLOCK(4K) : ALIGN(4K)
|
||||
{
|
||||
*(COMMON)
|
||||
*(.bss)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user