aboutsummaryrefslogtreecommitdiffstats
path: root/test.subv
diff options
context:
space:
mode:
Diffstat (limited to 'test.subv')
-rw-r--r--test.subv45
1 files changed, 26 insertions, 19 deletions
diff --git a/test.subv b/test.subv
index f1c73fd..05cb8c1 100644
--- a/test.subv
+++ b/test.subv
@@ -2,23 +2,30 @@
main:
# load 0x10010000 (UART0) into t0
37/lui 5/rd/t0 0x10010/imm20
- # store 0x48 (H) in UART0+0
- 13/opi 0/subop/add 6/rd/t1 0/rs/x0 48/imm12
+
+ # x4 = &message
+ # . load high bits
+ 37/lui 4/rd/x4 Message/20/imm32>>12
+ # . add low bits
+ 13/opi 0/subop/add 4/rd/x4 4/rs/x4 Message/12/imm32
+print:loop:
+ # load unsigned byte at x4
+ 03/load 4/subop/lbu 6/rd/t1 4/rs/x4 0/imm12
+ # break loop if zero
+ 63/branch 0/subop/== 6/rs/t1 0/rs/x0 print:break/off13
+ # print char
23/store 2/subop/word 5/rs/t0 6/rs/t1 0/off12
- # store 0x65 (e) in UART0+0
- 13/opi 0/subop/add 6/rd/t1 0/rs/x0 65/imm12
- 23/store 2/subop/word 5/rs/t0 6/rs/t1 0/off12
- # store 0x6c (l) in UART0+0
- 13/opi 0/subop/add 6/rd/t1 0/rs/x0 6c/imm12
- 23/store 2/subop/word 5/rs/t0 6/rs/t1 0/off12
- # store 0x6c (l) in UART0+0
- 13/opi 0/subop/add 6/rd/t1 0/rs/x0 6c/imm12
- 23/store 2/subop/word 5/rs/t0 6/rs/t1 0/off12
- # store 0x6f (o) in UART0+0
- 13/opi 0/subop/add 6/rd/t1 0/rs/x0 6f/imm12
- 23/store 2/subop/word 5/rs/t0 6/rs/t1 0/off12
- # store 0x0a (\n) in UART0+0
- 13/opi 0/subop/add 6/rd/t1 0/rs/x0 0a/imm12
- 23/store 2/subop/word 5/rs/t0 6/rs/t1 0/off12
- # jump back up to the top
- 6f/jal 0/rd/x0 main/off21
+ # increment x4
+ 13/opi 0/subop/add 4/rd/x4 4/rs/x4 1/imm12
+ # jump back up
+ 6f/jal 0/rd/x0 print:loop/off21
+print:break:
+
+loop:
+ # infinite loop
+ 6f/jal 0/rd/x0 loop/off21
+
+== data 0x80001000
+Message:
+ # "Hello World\n\0"
+ 48/8 65/8 6c/8 6c/8 6f/8 20/8 77/8 6f/8 72/8 6c/8 64/8 21/8 0a/8 00/8