From a4ea0b14840ef5946408a3893f3f1c92ed57ae80 Mon Sep 17 00:00:00 2001 From: Jake Mannens Date: Wed, 20 Jun 2018 04:39:25 +1000 Subject: Added a very basic types.h header file that defines NULL, size_t and time_t. Moved the kernel's loading point down to address 0 in conventional memory and updated linker scripts accordingly. Began to experiment with loading a binary blob into extended memory (0x100000), switching to userspace mode, and executing it. --- kernel/usrbin/usrbin.s | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 kernel/usrbin/usrbin.s (limited to 'kernel/usrbin/usrbin.s') diff --git a/kernel/usrbin/usrbin.s b/kernel/usrbin/usrbin.s new file mode 100644 index 0000000..91dd94a --- /dev/null +++ b/kernel/usrbin/usrbin.s @@ -0,0 +1,32 @@ +bits 32 +org 0x100000 + +main: + push .msg + call puts + add esp, 4 +.loop: + ; loop forever + jmp .loop +.msg: db "Hello World from Userspace!", 0 + +puts: + push ebp + mov ebp, esp + push esi + push edi + mov esi, [ebp+8] + mov edi, 0xB8000 +.loop: + lodsb + cmp al, 0 + je .end + mov [edi], al + mov byte [edi+1], 0x07 + add edi, 2 + jmp .loop +.end: + pop edi + pop esi + pop ebp + ret -- cgit v1.3