summaryrefslogtreecommitdiff
path: root/boot/asm-boot.s
diff options
context:
space:
mode:
Diffstat (limited to 'boot/asm-boot.s')
-rw-r--r--boot/asm-boot.s29
1 files changed, 29 insertions, 0 deletions
diff --git a/boot/asm-boot.s b/boot/asm-boot.s
new file mode 100644
index 0000000..594c624
--- /dev/null
+++ b/boot/asm-boot.s
@@ -0,0 +1,29 @@
+# s1 - Contains the current position in the source text.
+
+.data
+
+.equ SYS_EXIT, 93
+.equ SOURCE_BUFFER_SIZE, 2048
+
+.bss
+.global source_code
+.type source_code, @object
+.size source_code, SOURCE_BUFFER_SIZE
+source_code: .zero SOURCE_BUFFER_SIZE
+
+.text
+.global _start # Program entry point.
+
+_start:
+ # Read the source from the standard input.
+ la a0, source_code
+ li a1, SOURCE_BUFFER_SIZE # Buffer size.
+ call read_file
+
+ la s1, source_code # s1 = Source code position.
+ call compile
+
+ # Call exit.
+ addi a0, zero, 0 # Use 0 return code.
+ addi a7, zero, SYS_EXIT
+ ecall