diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-11-09 08:52:28 +0000 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2023-11-09 08:52:28 +0000 |
commit | bd6fb54e3116b102670c980851af56461771545d (patch) | |
tree | 71641a7d51b6bda43d61d02918d97068db09b55f /examples | |
parent | f896ad2cb714be6853ad7e0cec854d4295de5bed (diff) | |
download | ovm-bd6fb54e3116b102670c980851af56461771545d.tar.gz ovm-bd6fb54e3116b102670c980851af56461771545d.tar.bz2 ovm-bd6fb54e3116b102670c980851af56461771545d.zip |
Use constants in examples where possible
Stuff like numeric limits can be codified in constants which act self
documenting.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/factorial.asm | 4 | ||||
-rw-r--r-- | examples/fib.asm | 60 |
2 files changed, 34 insertions, 30 deletions
diff --git a/examples/factorial.asm b/examples/factorial.asm index 76e80b5..021360b 100644 --- a/examples/factorial.asm +++ b/examples/factorial.asm @@ -1,6 +1,8 @@ ;;; factorial.asm: A program that generates the factorials of each ;;; number from 1 to 24 (24!~=UINT64_MAX). Using the registers to ;;; store `n` and `n!`. + ;; Constants + %const(limit) 22 %end ;; Setup entrypoint global main @@ -38,7 +40,7 @@ loopback: mult.word mov.word 1 - push.word 24 + push.word $limit push.reg.word 0 gte.word ;; Jump to `loopback` diff --git a/examples/fib.asm b/examples/fib.asm index 03d9725..717ca8c 100644 --- a/examples/fib.asm +++ b/examples/fib.asm @@ -4,6 +4,30 @@ ;;; memory is necessary for this program to function, unlike a pure ;;; stack version. + ;; Constants + %const(limit) 12200160415121876738 %end + %const(increment_i) + push.reg.word 2 + push.word 1 + plus.word + mov.word 2 + %end + + %const(print_i) + push.reg.word 2 + print.word + %end + + %const(print_reg_0) + push.reg.word 0 + print.word + %end + + %const(print_reg_1) + push.reg.word 1 + print.word + %end + ;; Setup entrypoint global main main: @@ -32,7 +56,7 @@ loopback: plus.word mov.word 1 - push.word 12200160415121876738 + push.word $limit push.reg.word 1 gte.word ;; Jump to `loopback` @@ -42,46 +66,24 @@ loopback: print_pair: push.byte '\t' print.char - call print_i + $print_i push.byte ':' print.char push.byte ' ' print.char - call print_reg_0 + $print_reg_0 push.byte '\n' print.char - call increment_i + $increment_i push.byte '\t' print.char - call print_i + $print_i push.byte ':' print.char push.byte ' ' print.char - call print_reg_1 + $print_reg_1 push.byte '\n' print.char - call increment_i - ret - -increment_i: - push.reg.word 2 - push.word 1 - plus.word - mov.word 2 - ret - -print_i: - push.reg.word 2 - print.word - ret - -print_reg_0: - push.reg.word 0 - print.word - ret - -print_reg_1: - push.reg.word 1 - print.word + $increment_i ret |