mirror of
https://github.com/soconnor0919/eceg431.git
synced 2025-12-11 06:34:43 -05:00
project07 - add project files
This commit is contained in:
26
07/MemoryAccess/BasicTest/BasicTest.tst
Normal file
26
07/MemoryAccess/BasicTest/BasicTest.tst
Normal 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;
|
||||
32
07/MemoryAccess/BasicTest/BasicTest.vm
Normal file
32
07/MemoryAccess/BasicTest/BasicTest.vm
Normal 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
|
||||
28
07/MemoryAccess/BasicTest/BasicTestVME.tst
Normal file
28
07/MemoryAccess/BasicTest/BasicTestVME.tst
Normal 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;
|
||||
22
07/MemoryAccess/PointerTest/PointerTest.tst
Normal file
22
07/MemoryAccess/PointerTest/PointerTest.tst
Normal 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;
|
||||
23
07/MemoryAccess/PointerTest/PointerTest.vm
Normal file
23
07/MemoryAccess/PointerTest/PointerTest.vm
Normal 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
|
||||
22
07/MemoryAccess/PointerTest/PointerTestVME.tst
Normal file
22
07/MemoryAccess/PointerTest/PointerTestVME.tst
Normal 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;
|
||||
20
07/MemoryAccess/StaticTest/StaticTest.tst
Normal file
20
07/MemoryAccess/StaticTest/StaticTest.tst
Normal 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;
|
||||
18
07/MemoryAccess/StaticTest/StaticTest.vm
Normal file
18
07/MemoryAccess/StaticTest/StaticTest.vm
Normal 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
|
||||
20
07/MemoryAccess/StaticTest/StaticTestVME.tst
Normal file
20
07/MemoryAccess/StaticTest/StaticTestVME.tst
Normal 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;
|
||||
BIN
07/Project 7.pdf
Normal file
BIN
07/Project 7.pdf
Normal file
Binary file not shown.
20
07/StackArithmetic/SimpleAdd/SimpleAdd.tst
Normal file
20
07/StackArithmetic/SimpleAdd/SimpleAdd.tst
Normal 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/StackArithmetic/SimpleAdd/SimpleAdd.tst
|
||||
|
||||
// Tests SimpleAdd.asm on the CPU emulator.
|
||||
|
||||
load SimpleAdd.asm,
|
||||
output-file SimpleAdd.out,
|
||||
compare-to SimpleAdd.cmp,
|
||||
|
||||
set RAM[0] 256, // initializes the stack pointer
|
||||
|
||||
repeat 60 { // enough cycles to complete the execution
|
||||
ticktock;
|
||||
}
|
||||
|
||||
// Outputs the stack pointer and the value at the stack's base
|
||||
output-list RAM[0]%D2.6.2 RAM[256]%D2.6.2;
|
||||
output;
|
||||
10
07/StackArithmetic/SimpleAdd/SimpleAdd.vm
Normal file
10
07/StackArithmetic/SimpleAdd/SimpleAdd.vm
Normal file
@@ -0,0 +1,10 @@
|
||||
// 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/StackArithmetic/SimpleAdd/SimpleAdd.vm
|
||||
|
||||
// Pushes and adds two constants.
|
||||
|
||||
push constant 7
|
||||
push constant 8
|
||||
add
|
||||
20
07/StackArithmetic/SimpleAdd/SimpleAddVME.tst
Normal file
20
07/StackArithmetic/SimpleAdd/SimpleAddVME.tst
Normal 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/StackArithmetic/SimpleAdd/SimpleAddVME.tst
|
||||
|
||||
// Tests and illustrates SimpleAdd.vm on the VM simulator.
|
||||
|
||||
load SimpleAdd.vm,
|
||||
output-file SimpleAdd.out,
|
||||
compare-to SimpleAdd.cmp,
|
||||
|
||||
set RAM[0] 256, // initializes the stack pointer
|
||||
|
||||
repeat 3 { // SimpleAdd.vm has 3 VM commands
|
||||
vmstep;
|
||||
}
|
||||
|
||||
// Outputs the stack pointer and the value at the stack's base
|
||||
output-list RAM[0]%D2.6.2 RAM[256]%D2.6.2;
|
||||
output;
|
||||
23
07/StackArithmetic/StackTest/StackTest.tst
Normal file
23
07/StackArithmetic/StackTest/StackTest.tst
Normal 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/StackArithmetic/StackTest/StackTest.tst
|
||||
|
||||
// Tests StackTest.asm on the CPU emulator.
|
||||
|
||||
load StackTest.asm,
|
||||
output-file StackTest.out,
|
||||
compare-to StackTest.cmp,
|
||||
|
||||
set RAM[0] 256, // initializes the stack pointer
|
||||
|
||||
repeat 1000 { // enough cycles to complete the execution
|
||||
ticktock;
|
||||
}
|
||||
|
||||
// Outputs the stack pointer and the stack contents: RAM[256]-RAM[265]
|
||||
output-list RAM[0]%D2.6.2
|
||||
RAM[256]%D2.6.2 RAM[257]%D2.6.2 RAM[258]%D2.6.2 RAM[259]%D2.6.2 RAM[260]%D2.6.2;
|
||||
output;
|
||||
output-list RAM[261]%D2.6.2 RAM[262]%D2.6.2 RAM[263]%D2.6.2 RAM[264]%D2.6.2 RAM[265]%D2.6.2;
|
||||
output;
|
||||
45
07/StackArithmetic/StackTest/StackTest.vm
Normal file
45
07/StackArithmetic/StackTest/StackTest.vm
Normal file
@@ -0,0 +1,45 @@
|
||||
// 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/StackArithmetic/StackTest/StackTest.vm
|
||||
|
||||
// Executes a sequence of arithmetic and logical operations on the stack.
|
||||
|
||||
push constant 17
|
||||
push constant 17
|
||||
eq
|
||||
push constant 17
|
||||
push constant 16
|
||||
eq
|
||||
push constant 16
|
||||
push constant 17
|
||||
eq
|
||||
push constant 892
|
||||
push constant 891
|
||||
lt
|
||||
push constant 891
|
||||
push constant 892
|
||||
lt
|
||||
push constant 891
|
||||
push constant 891
|
||||
lt
|
||||
push constant 32767
|
||||
push constant 32766
|
||||
gt
|
||||
push constant 32766
|
||||
push constant 32767
|
||||
gt
|
||||
push constant 32766
|
||||
push constant 32766
|
||||
gt
|
||||
push constant 57
|
||||
push constant 31
|
||||
push constant 53
|
||||
add
|
||||
push constant 112
|
||||
sub
|
||||
neg
|
||||
and
|
||||
push constant 82
|
||||
or
|
||||
not
|
||||
23
07/StackArithmetic/StackTest/StackTestVME.tst
Normal file
23
07/StackArithmetic/StackTest/StackTestVME.tst
Normal 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/StackArithmetic/StackTest/StackTestVME.tst
|
||||
|
||||
// Tests and illustrates StackTest.vm on the VM simulator.
|
||||
|
||||
load StackTest.vm,
|
||||
output-file StackTest.out,
|
||||
compare-to StackTest.cmp,
|
||||
|
||||
set RAM[0] 256, // initializes the stack pointer
|
||||
|
||||
repeat 38 { // StackTest.vm has 38 VM commands
|
||||
vmstep;
|
||||
}
|
||||
|
||||
// Outputs the stack pointer (RAM[0]) and the stack contents: RAM[256]-RAM[265]
|
||||
output-list RAM[0]%D2.6.2
|
||||
RAM[256]%D2.6.2 RAM[257]%D2.6.2 RAM[258]%D2.6.2 RAM[259]%D2.6.2 RAM[260]%D2.6.2;
|
||||
output;
|
||||
output-list RAM[261]%D2.6.2 RAM[262]%D2.6.2 RAM[263]%D2.6.2 RAM[264]%D2.6.2 RAM[265]%D2.6.2;
|
||||
output;
|
||||
19
07/project07/readme.txt
Normal file
19
07/project07/readme.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
Project 7: Virtual Machine, Part 1, Stack Arithmetic
|
||||
|
||||
The description for this project is found at:
|
||||
|
||||
https://www.nand2tetris.org/project07
|
||||
|
||||
You may _absolutely_ work as pairs on this project.
|
||||
|
||||
The default name for your file should be 'hvm.py'. If you name your file something else, just edit the "PythonFileName.txt" file to have the correct name.
|
||||
|
||||
We are now dealing with compiling programs exist in directories. For this project, you will need to look inside the directory, find the VM file and then create an ASM file inside the same directory. The name of the ASM file is the name of the directory.
|
||||
|
||||
Hints:
|
||||
|
||||
a) Use the proposed API in chapter 7 that splits the tasks across separate "modules."
|
||||
|
||||
b) The course notes start to get quite complex. I've broken things apart into smaller PDFs to help you find what you are looking for more quickly.
|
||||
|
||||
c) Starting now, you may work as partners on projects if you want. Make a plan for who is going to work on what parts, and then when you demonstrate your code, you will each need to talk through things with me and discuss how you divided work and collaborated.
|
||||
BIN
07/project07/slides-bytopic/01-HackExamples.pdf
Normal file
BIN
07/project07/slides-bytopic/01-HackExamples.pdf
Normal file
Binary file not shown.
BIN
07/project07/slides-bytopic/02-VMCompilation.pdf
Normal file
BIN
07/project07/slides-bytopic/02-VMCompilation.pdf
Normal file
Binary file not shown.
BIN
07/project07/slides-bytopic/03-StackBasics.pdf
Normal file
BIN
07/project07/slides-bytopic/03-StackBasics.pdf
Normal file
Binary file not shown.
BIN
07/project07/slides-bytopic/04-FirstSteps.pdf
Normal file
BIN
07/project07/slides-bytopic/04-FirstSteps.pdf
Normal file
Binary file not shown.
BIN
07/project07/slides-bytopic/05-StackArithmeticBasics.pdf
Normal file
BIN
07/project07/slides-bytopic/05-StackArithmeticBasics.pdf
Normal file
Binary file not shown.
BIN
07/project07/slides-bytopic/06-IntroMemorySegments.pdf
Normal file
BIN
07/project07/slides-bytopic/06-IntroMemorySegments.pdf
Normal file
Binary file not shown.
BIN
07/project07/slides-bytopic/07-Pointers.pdf
Normal file
BIN
07/project07/slides-bytopic/07-Pointers.pdf
Normal file
Binary file not shown.
BIN
07/project07/slides-bytopic/08-ClosingThoughts.pdf
Normal file
BIN
07/project07/slides-bytopic/08-ClosingThoughts.pdf
Normal file
Binary file not shown.
BIN
07/project07/slides.pdf
Normal file
BIN
07/project07/slides.pdf
Normal file
Binary file not shown.
Reference in New Issue
Block a user