From e8c36b131ac12832bb1d5de0e3a710733fca88ac Mon Sep 17 00:00:00 2001 From: Nick Shipp Date: Sun, 22 Apr 2018 18:32:50 -0400 Subject: Initial commit --- boot.s | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 boot.s (limited to 'boot.s') diff --git a/boot.s b/boot.s new file mode 100644 index 0000000..3f3457a --- /dev/null +++ b/boot.s @@ -0,0 +1,76 @@ +bits 64 + +section .text + org 0x0 + +_start: + ; EFI System Table magic + mov rax, 0x5453595320494249 + cmp rax, [rdx] + + mov rdi, 0x1 + jne fail ; Invalid magic + +; mov r8, rax +; add r8, 0x1c +; mov word [rax+0x10], 0xfff +; mov qword [rax+0x12], r8 +; +; xor rcx, rcx +;zero: +; mov qword [r8+rcx], 0x0 +; add rcx, 0x8 +; cmp rcx, 0xfff +; jle zero +; +; lea r8, [rel int] +; mov word [rax+0x1c], r8w ; offset_1 +; shr r8, 16 +; mov word [rax+0x1e], 0 ; selector +; mov byte [rax+0x20], 0 ; ist +; mov byte [rax+0x21], 0xff ; type_attr +; mov word [rax+0x22], r8w ; offset_2 +; shr r8, 16 +; mov dword [rax+0x24], r8d ; offset_3 +; mov dword [rax+0x28], 0 ; reserved, SBZ +; +; cli +; lidt [rax+16] +; sti + + ;int 0x0 + + push rbp + mov rbp, rsp + sub rsp, 0x30 + + mov rbx, rdx + +hello: + mov rcx, qword [rdx+0x40] ; arg0=ConOut + lea rdx, [rel msg] ; arg1=msg + call qword [rcx+0x8] ; OutputString + + mov rdi, 0x0 ; EFI_SUCCESS + +fail: ; error in rdi + mov rax, rdi + mov rsp, rbp + pop rbp + retn + +msg: db __utf16__ 'Hello, World',0xd,0,0xa,0,0,0 + +; int: +; lea rax, [rel end] +; mov rdx, qword [rax+8] +; +; mov rcx, qword [rdx+0x40] ; arg0=ConOut +; lea rdx, [rel err] ; arg1=err +; call qword [rcx+0x8] ; OutputString +; +; iretq + +align 0x20 + +end: -- cgit v1.2.3-54-g00ecf