Files
nand2tetris/projects/12/MemoryTest/Main.vm
T
QkoSad 7894b48931 .
2025-07-16 13:00:37 +03:00

181 lines
2.3 KiB
Plaintext
Executable File

function Main.main 5
push constant 8000
push constant 333
call Memory.poke 2
pop temp 0
push constant 8000
call Memory.peek 1
pop local 0
push constant 8001
push local 0
push constant 1
add
call Memory.poke 2
pop temp 0
push constant 3
call Array.new 1
pop local 2
push local 2
push constant 2
push constant 222
pop temp 1
add
pop pointer 1
push temp 1
pop that 0
push constant 8002
push local 2
push constant 2
add
pop pointer 1
push that 0
call Memory.poke 2
pop temp 0
push constant 0
pop local 1
push constant 3
call Array.new 1
pop local 3
push local 3
push constant 1
push local 2
push constant 2
add
pop pointer 1
push that 0
push constant 100
sub
pop temp 1
add
pop pointer 1
push temp 1
pop that 0
push local 3
push local 2
eq
not
if-goto L0
push constant 1
pop local 1
goto L1
label L0
label L1
push constant 8003
push local 3
push constant 1
add
pop pointer 1
push that 0
push local 1
add
call Memory.poke 2
pop temp 0
push constant 0
pop local 1
push constant 500
call Array.new 1
pop local 4
push local 4
push constant 499
push local 2
push constant 2
add
pop pointer 1
push that 0
push local 3
push constant 1
add
pop pointer 1
push that 0
sub
pop temp 1
add
pop pointer 1
push temp 1
pop that 0
push local 4
push local 2
eq
not
if-goto L2
push constant 1
pop local 1
goto L3
label L2
label L3
push local 4
push local 3
eq
not
if-goto L4
push local 1
push constant 10
add
pop local 1
goto L5
label L4
label L5
push constant 8004
push local 4
push constant 499
add
pop pointer 1
push that 0
push local 1
add
call Memory.poke 2
pop temp 0
push local 2
call Array.dispose 1
pop temp 0
push local 3
call Array.dispose 1
pop temp 0
push constant 0
pop local 1
push constant 3
call Array.new 1
pop local 3
push local 3
push constant 0
push local 4
push constant 499
add
pop pointer 1
push that 0
push constant 90
sub
pop temp 1
add
pop pointer 1
push temp 1
pop that 0
push local 3
push local 4
eq
not
if-goto L6
push constant 1
pop local 1
goto L7
label L6
label L7
push constant 8005
push local 3
push constant 0
add
pop pointer 1
push that 0
push local 1
add
call Memory.poke 2
pop temp 0
push local 4
call Array.dispose 1
pop temp 0
push local 3
call Array.dispose 1
pop temp 0
push constant 0
return