Add some pseudocode to examples

This commit is contained in:
2023-12-14 17:18:28 +01:00
parent 54505d4d4d
commit 984e29ec84
5 changed files with 67 additions and 10 deletions

View File

@@ -1,4 +1,15 @@
; Evaluate 2*3+5
;
; pseudocode:
; sum(prd(2, 3), 5)
;
; sum(a, b) {
; return a+b
; }
;
; prd(a, b) {
; return a*b;
; }
main: push 2
push 3

View File

@@ -1,9 +1,15 @@
; I/O example - simple echo
;
; pseudocode:
; do { // read
; x = in()
; out(x)
; while(x - 0x0A != 0)
read: in
dup
out
push 0x0A
sub
sub
jne &read ; loop until the input != new line (0x0A)
halt

View File

@@ -1,7 +1,23 @@
; Evaluate 2^10 - loop variant
;
; pseudocode
; pow(2, 10)
;
; pow(base, exp) {
; acc = 1
;
; do { // .loop
; if (exp == 0) {
; return acc // .done
; }
;
; acc = acc * base
; exp = exp - 1
; } while(true)
; }
push 2
push 10
push 2 ; base
push 10 ; exp
call &pow
clr 2
halt
@@ -14,11 +30,11 @@ pow: lda 1 ; base
.loop: ldl 1 ; if exp == 0 | exp
je &.done ; then return | exp
pop ; |
; |
; |
ldl 2 ; Evaluate | acc
ldl 0 ; next power | acc base
mul ; | acc*base
stl 2 ; |
stl 2 ; |
; |
ldl 1 ; Decrement exp | exp
push 1 ; | exp 1

View File

@@ -1,4 +1,15 @@
; Evaluate 2^10 - recursive variant
;
; pseudocode:
; pow(2, 10)
;
; pow(base, exp) {
; if (exp == 0) {
; return 1 // .edge
; }
;
; return base * pow(base, exp - 1)
; }
push 2 ; base
push 10 ; exp
@@ -22,7 +33,7 @@ pow: lda 1 ; base
clr 1 ; | base base^(exp-1)
mul ; | base*base^(exp-1)
ret ; | base*base^(exp-1)
.edge: pop
.edge: pop
push 1 ; return 1
ret
ret

View File

@@ -1,4 +1,17 @@
; The N-th element of Fibbonaci sequence - recursive variant
;
; pseudocode:
; fibb(n) {
; if (n == 0) {
; return 1 // .done0
; }
;
; if ((n-1) == 0) {
; return 1 // .done1
; }
;
; return fibb(n-2) + fibb(n-1)
; }
push 6
call &fibb
@@ -8,7 +21,7 @@ halt
fibb: lda 0 ; n | Stack:
ldl 0 ; n == 0 -> return 1 | n
je &.done0 ; | n
pop ; |
pop ; |
ldl 0 ; n == 1 -> return 1 | n
push 1 ; | n 1
sub ; | n-1
@@ -27,7 +40,7 @@ fibb: lda 0 ; n | Stack:
.done1: pop
push 1
ret
.done0: pop
push 1
ret