project07 - add project files

This commit is contained in:
2025-10-07 22:11:24 -04:00
parent ed1df6332a
commit c2eb5f198a
26 changed files with 371 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/7/MemoryAccess/BasicTest/BasicTest.tst
// Tests BasicTest.asm on the CPU emulator.
load BasicTest.asm,
output-file BasicTest.out,
compare-to BasicTest.cmp,
set RAM[0] 256, // stack pointer
set RAM[1] 300, // base address of the local segment
set RAM[2] 400, // base address of the argument segment
set RAM[3] 3000, // base address of the this segment
set RAM[4] 3010, // base address of the that segment
repeat 600 { // enough cycles to complete the execution
ticktock;
}
// Outputs the value at the stack's base and some values from the tested memory segments
output-list RAM[256]%D1.6.1 RAM[300]%D1.6.1 RAM[401]%D1.6.1
RAM[402]%D1.6.1 RAM[3006]%D1.6.1 RAM[3012]%D1.6.1
RAM[3015]%D1.6.1 RAM[11]%D1.6.1;
output;

View File

@@ -0,0 +1,32 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/7/MemoryAccess/BasicTest/BasicTest.vm
// Executes pop and push commands.
push constant 10
pop local 0
push constant 21
push constant 22
pop argument 2
pop argument 1
push constant 36
pop this 6
push constant 42
push constant 45
pop that 5
pop that 2
push constant 510
pop temp 6
push local 0
push that 5
add
push argument 1
sub
push this 6
push this 6
add
sub
push temp 6
add

View File

@@ -0,0 +1,28 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/7/MemoryAccess/BasicTest/BasicTestVME.tst
// Tests and illustrates BasicTest.vm on the VM simulator.
// Starts by setting the stack pointer and the base addresses
// of relevant memory segments to selected RAM addresses.
load BasicTest.vm,
output-file BasicTest.out,
compare-to BasicTest.cmp,
set sp 256, // stack pointer
set local 300, // base address of the local segment
set argument 400, // base address of the argument segment
set this 3000, // base address of the this segment
set that 3010, // base address of the that segment
repeat 25 { // BasicTest.vm has 25 VM commands
vmstep;
}
// Outputs the value at the stack's base and some values from the tested memory segments
output-list RAM[256]%D1.6.1 RAM[300]%D1.6.1 RAM[401]%D1.6.1
RAM[402]%D1.6.1 RAM[3006]%D1.6.1 RAM[3012]%D1.6.1
RAM[3015]%D1.6.1 RAM[11]%D1.6.1;
output;

View File

@@ -0,0 +1,22 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/7/MemoryAccess/PointerTest/PointerTest.tst
// Tests PointerTest.asm on the CPU emulator.
load PointerTest.asm,
output-file PointerTest.out,
compare-to PointerTest.cmp,
set RAM[0] 256, // initializes the stack pointer
repeat 450 { // enough cycles to complete the execution
ticktock;
}
// Outputs the value at the stack's base, THIS, THAT, and
// some values from the the this and that segments
output-list RAM[256]%D1.6.1 RAM[3]%D1.6.1
RAM[4]%D1.6.1 RAM[3032]%D1.6.1 RAM[3046]%D1.6.1;
output;

View File

@@ -0,0 +1,23 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/7/MemoryAccess/PointerTest/PointerTest.vm
// Executes pop and push commands using the
// pointer, this, and that segments.
push constant 3030
pop pointer 0
push constant 3040
pop pointer 1
push constant 32
pop this 2
push constant 46
pop that 6
push pointer 0
push pointer 1
add
push this 2
sub
push that 6
add

View File

@@ -0,0 +1,22 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/7/MemoryAccess/PointerTest/PointerTestVME.tst
// Tests and illustrates PointerTest.vm on the VM simulator.
load PointerTest.vm,
output-file PointerTest.out,
compare-to PointerTest.cmp,
set RAM[0] 256, // initializes the stack pointer
repeat 15 { // PointerTest.vm has 15 VM commands
vmstep;
}
// Outputs the stack base, THIS, THAT, and
// some values from the the this and that segments
output-list RAM[256]%D1.6.1 RAM[3]%D1.6.1 RAM[4]%D1.6.1
RAM[3032]%D1.6.1 RAM[3046]%D1.6.1;
output;

View File

@@ -0,0 +1,20 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/7/MemoryAccess/StaticTest/StaticTest.tst
// Tests StaticTest.asm on the CPU emulator.
load StaticTest.asm,
output-file StaticTest.out,
compare-to StaticTest.cmp,
set RAM[0] 256, // initializes the stack pointer
repeat 200 { // enough cycles to complete the execution
ticktock;
}
// Outputs the value at the stack's base
output-list RAM[256]%D1.6.1;
output;

View File

@@ -0,0 +1,18 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/7/MemoryAccess/StaticTest/StaticTest.vm
// Executes pop and push commands using the static segment.
push constant 111
push constant 333
push constant 888
pop static 8
pop static 3
pop static 1
push static 3
push static 1
sub
push static 8
add

View File

@@ -0,0 +1,20 @@
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/7/MemoryAccess/StaticTest/StaticTestVME.tst
// Tests and illustrates StaticTest.vm on the VM simulator.
load StaticTest.vm,
output-file StaticTest.out,
compare-to StaticTest.cmp,
set sp 256, // initializes the stack pointer
repeat 11 { // StaticTest.vm has 11 VM commands
vmstep;
}
// Outputs the value at the stack's base
output-list RAM[256]%D1.6.1;
output;