aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2020-05-28 15:34:15 +0000
committers-ol <s-ol@users.noreply.github.com>2020-05-28 15:34:15 +0000
commit82d3ddfc5c0bf2ba77c04d65630841f373cce709 (patch)
tree6f81eaa122d04bb90e2c6b849c4cc0b0a32e0677 /README.md
parentsurvey, pack (diff)
downloadsubv-82d3ddfc5c0bf2ba77c04d65630841f373cce709.tar.gz
subv-82d3ddfc5c0bf2ba77c04d65630841f373cce709.zip
Add ex.*
Diffstat (limited to 'README.md')
-rw-r--r--README.md67
1 files changed, 66 insertions, 1 deletions
diff --git a/README.md b/README.md
index b3d718b..663f819 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,72 @@ back to front:
- `survey.py`: replaces label references by their addresses
- `format.py`: checks op-arguments and chops and orders arguments into ISA formats
-and now back to front with a little example:
+and now front to back with a little example:
+
+ $ ./format.py <ex.subv >ex.format
+ $ ./survey.py <ex.format >ex.survey
+ $ ./pack.py <ex.survey >ex.pack
+ $ ./elf.py <ex.pack >ex.elf
+ $ ./qemu.sh ex.elf
+
+`ex.subv`: hand-writable.
+
+ == code 0x80000000
+ # repeatedly print "Hi\\n"
+ 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
+ 23/store 2/subop/word 5/rs/t0 6/rs/t1 0/off12
+ # store 0x69 (i) in UART0+0
+ 13/opi 0/subop/add 6/rd/t1 0/rs/x0 69/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
+
+`ex.format`: arguments sliced and diced and put into the ISA order.
+
+ == code 0x80000000
+ main:
+ 37/7 05/5 10010/20
+ 13/7 06/5 00/3 00/5 48/12
+ 23/7 00/5 02/3 05/5 06/5 00/7
+ 13/7 06/5 00/3 00/5 69/12
+ 23/7 00/5 02/3 05/5 06/5 00/7
+ 13/7 06/5 00/3 00/5 0a/12
+ 23/7 00/5 02/3 05/5 06/5 00/7
+ 6f/7 00/5 main/8/off21>>12 main/1/off21>>11 main/10/off21>>1 main/1/off21>>20
+
+
+`ex.survey`: labels resolved, ready to be packed into hex format
+
+ == code 0x80000000
+ 37/7 05/5 10010/20
+ 13/7 06/5 00/3 00/5 48/12
+ 23/7 00/5 02/3 05/5 06/5 00/7
+ 13/7 06/5 00/3 00/5 69/12
+ 23/7 00/5 02/3 05/5 06/5 00/7
+ 13/7 06/5 00/3 00/5 0a/12
+ 23/7 00/5 02/3 05/5 06/5 00/7
+ 6f/7 00/5 ff/8 01/1 3f2/10 01/1
+
+`ex.pack`: fully packed, ready to run bare-metal
+
+ == code 0x80000000
+ b7 02 01 10
+ 13 03 80 04
+ 23 a0 62 00
+ 13 03 90 06
+ 23 a0 62 00
+ 13 03 a0 00
+ 23 a0 62 00
+ 6f f0 5f fe
+
+`ex.elf`: binary file for use with `qemu` (see next section).
Debugging
---------