Upload
dgsbu
View
307
Download
0
Tags:
Embed Size (px)
Citation preview
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
r1
r13
r14
100
MemoryCPU Registers
101
102
103
104
105
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3r1
r13
r14
100
MemoryCPU Registers
101
102
103
104
105
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3r1
r13
r14
100
MemoryCPU Registers
101
102
103
104
105
100r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
r15
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3
???
r1
r13
r14
100
MemoryCPU Registers
101
102
103
104
105
100r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
r15
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3
03
r1
r13
r14
100
MemoryCPU Registers
101
102
103
104
105
100r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
r15
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3
03
r1
r13
r14
100
MemoryCPU Registers
101
102
103
104
105
100r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
r15
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3
03
r1
r13
r14
100
MemoryCPU Registers
101
102
103
104
105
100r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
r15
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3
03
r1
r13
r14
100
MemoryCPU Registers
101
102
103
104
105
100r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
r15
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3
03
r1
r13
r14
100
MemoryCPU Registers
101
102
103
104
105
100,101r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
r15
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3
03
r1
r13
r14
100
MemoryCPU Registers
101
102
103
104
105
100,101r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
r15
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3
03
r1
r13
r14
3
100
MemoryCPU Registers
101
102
103
104
105
100,101r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
r15
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3
03
r1
r13
r14
3
100
MemoryCPU Registers
101
102
103
104
105
100,101,102r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
r15
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3
03
r1
r13
r14
3
03
100
MemoryCPU Registers
101
102
103
104
105
100,101,102r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3, 2
03
r1
r13
r14
3
03
100
MemoryCPU Registers
101
102
103
104
105
100,101,102r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2
03
r1
r13
r14
3
03
100
MemoryCPU Registers
101
102
103
104
105
100,101,102r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2
03,15
r1
r13
r14
3
03
100
MemoryCPU Registers
101
102
103
104
105
100,101,102r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2
03,15
r1
r13
r14
3
03
100
MemoryCPU Registers
101
102
103
104
105
100,101,102r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2
03,15
r1
r13
r14
3
03
100
MemoryCPU Registers
101
102
103
104
105
100,101,102r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2
03,15
r1
r13
r14
3
03
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2
03,15
r1
r13
r14
3
03
2
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2
03,15
r1
r13
r14
3
03
2
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2
03,15
r1
r13
r14
3
03
2
15
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1
03,15
r1
r13
r14
3
03
2
15
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1
03,15,15
r1
r13
r14
3
03
2
15
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1
03,15,15
r1
r13
r14
3
03
2
15
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1
03,15,15
r1
r13
r14
3
03
2
15
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1
03,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1
03,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1
03,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0
03,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0
03,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0
03,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0
1
03,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0
1
03,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0
1
03,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0
1
03,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0
1
03,15,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0
1
03,15,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1
1
03,15,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1
1
03,15,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1
1,1
03,15,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1
1,1
03,15,15,15,15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1
1,1
03,15,15,15,15,
15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1
1,1
03,15,15,15,15,
15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2
1,1
03,15,15,15,15,
15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2
1,1
03,15,15,15,15,
15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103,102
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2
1,1,2
03,15,15,15,15,
15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103,102
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2
1,1,2
03,15,15,15,15,
15
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103,102
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2
1,1,2
03,15,15,15,15,
15,03
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103,102
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2
1,1,2
03,15,15,15,15,
15,03
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103,102,101
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2,3
1,1,2
03,15,15,15,15,
15,03
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103,102,101
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2,3
1,1,2
03,15,15,15,15,
15,03
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103,102,101,100
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2,3
1,1,2,6
03,15,15,15,15,
15,03
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103,102,101,100
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2,3
1,1,2,6
03,15,15,15,15,
15,03
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103,102,101,100
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2,3
1,1,2,6
03,15,15,15,15,
15,03
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103,102,101,100
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15
fact
ori
al
rec
urs
ive
ca
se
mai
n
sto
reto
sta
ck
load
from
sta
ck
case
bas
e
3,2,1,0,1,2,3
1,1,2,6
03,15,15,15,15,
15,03
r1
r13
r14
3
03
2
15
1
100
MemoryCPU Registers
101
102
103
104
105
100,101,102,103,
104,105,106,105,104,103,102,101,100
r15
"the stack"input: x
return value (the "result")
return address (line #)
the stack pointer
00 read r1 01 setn r15 10002 call r14 0603 write r1304 halt05 nop06 jnez r1 0907 setn r13 108 jumpr r1409 addn r15 110 storer r1 r1511 addn r15 112 storer r14 r1513 addn r1 -114 call r14 0615 loadr r14 r1516 addn r15 -117 loadr r1 r1518 addn r15 -119 mul r13 r13 r120 jumpr r14
Trace what happens for an input of 3...
0, 1, 2, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 9, 10, 11, 12, 13, 14, 6, 7, 8 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 15, 16, 17, 18, 19, 20, 3, 4
It's easy to get lost! Follow the line numbers below to stay on track...
15
106
107
r15