Compare commits

...

3 Commits

Author SHA1 Message Date
73611cde09 Make resulting binary smaller. 2024-10-19 22:47:25 +05:00
a5b243bf82 Change Makefile a bit. 2024-10-19 22:24:11 +05:00
580a9fc34f Change linker script a bit. 2024-10-19 22:22:00 +05:00
3 changed files with 10 additions and 9 deletions

View File

@ -1,12 +1,12 @@
SRCS = boot.c SRCS = boot.c
LDFLAGS = -melf_i386 -nostdlib --oformat binary -T linker.ld LDFLAGS = -flto -T linker.ld -nostdlib
CFLAGS = -fno-pie -Wall -std=c2x -m16 -nostdlib -Os -nostartfiles CFLAGS = -flto -ffreestanding -fno-builtin -fno-pie -Wall -std=c2x -m16 -nostdlib -Os -nostartfiles -r
%.o: %.c %.o: %.c
$(CC) $(CFLAGS) $^ -c -o $@ $(CC) $^ -o $@ $(CFLAGS)
all: $(SRCS:.c=.o) all: $(SRCS:.c=.o)
$(LD) $(LDFLAGS) -o bin $^ $(CC) $(LDFLAGS) -o bin $^
clean: clean:
$(RM) $(SRCS:.c=.o) bin $(RM) $(SRCS:.c=.o) bin

8
boot.c
View File

@ -1,5 +1,5 @@
void putchar(char); inline void putchar(char);
void write(char*); inline void write(char*);
void _start(void) { void _start(void) {
write("Hello World!\r\n\0"); write("Hello World!\r\n\0");
@ -7,12 +7,12 @@ void _start(void) {
; ;
} }
void write(char *out) { inline void write(char *out) {
for (char *i = out; *i != 0; i++) for (char *i = out; *i != 0; i++)
putchar(*i); putchar(*i);
} }
void putchar(char out) { inline void putchar(char out) {
__asm__ volatile ( __asm__ volatile (
"movb $0x0e, %%ah;" "movb $0x0e, %%ah;"
"movb %0, %%al;" "movb %0, %%al;"

View File

@ -1,9 +1,10 @@
ENTRY (_start) ENTRY (_start)
OUTPUT_FORMAT (binary) OUTPUT_FORMAT (binary)
OUTPUT_ARCH(i386)
SECTIONS SECTIONS
{ {
. = 0x7c00; . = 0x7c00;
.text : { boot.o(.text) .text : {
*(.text) *(.text)
} }
.rodata : { *(.rodata) .rodata : { *(.rodata)