-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
631dba6
commit 0b727d1
Showing
295 changed files
with
16,816 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,4 @@ | ||
# nand2tetris.part2--java | ||
Nand2Tetris Project Part 2 - written in Java | ||
|
||
This project is the second part of "The Elements of Computing Systems" by Nisan and Schocken, written in Java 8. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
|RAM[256]|RAM[300]|RAM[401]|RAM[402]|RAM[3006|RAM[3012|RAM[3015|RAM[11] | | ||
| 472 | 10 | 21 | 22 | 36 | 42 | 45 | 510 | |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
// 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/07/MemoryAccess/BasicTest/BasicTest.tst | ||
|
||
load BasicTest.asm, | ||
output-file BasicTest.out, | ||
compare-to BasicTest.cmp, | ||
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; | ||
|
||
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 stack base and some values | ||
// from the tested memory segments | ||
output; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
// 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/07/MemoryAccess/BasicTest/BasicTest.vm | ||
|
||
// Executes pop and push commands using the virtual memory segments. | ||
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 |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
// 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/07/MemoryAccess/BasicTest/BasicTestVME.tst | ||
|
||
load BasicTest.vm, | ||
output-file BasicTest.out, | ||
compare-to BasicTest.cmp, | ||
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; | ||
|
||
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 instructions | ||
vmstep; | ||
} | ||
|
||
// Outputs the stack base and some values | ||
// from the tested memory segments | ||
output; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
|RAM[256]| RAM[3] | RAM[4] |RAM[3032|RAM[3046| | ||
| 6084 | 3030 | 3040 | 32 | 46 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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/07/MemoryAccess/PointerTest/PointerTest.tst | ||
|
||
load PointerTest.asm, | ||
output-file PointerTest.out, | ||
compare-to PointerTest.cmp, | ||
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; | ||
|
||
set RAM[0] 256, // initializes the stack pointer | ||
|
||
repeat 450 { // enough cycles to complete the execution | ||
ticktock; | ||
} | ||
|
||
// outputs the stack base, this, that, and | ||
// some values from the the this and that segments | ||
output; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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/07/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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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/07/MemoryAccess/PointerTest/PointerTestVME.tst | ||
|
||
load PointerTest.vm, | ||
output-file PointerTest.out, | ||
compare-to PointerTest.cmp, | ||
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; | ||
|
||
set RAM[0] 256, // initializes the stack pointer | ||
|
||
repeat 15 { // PointerTest.vm has 15 instructions | ||
vmstep; | ||
} | ||
|
||
// outputs the stack base, this, that, and | ||
// some values from the the this and that segments | ||
output; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
|RAM[256]| | ||
| 1110 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// 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/07/MemoryAccess/StaticTest/StaticTest.tst | ||
|
||
load StaticTest.asm, | ||
output-file StaticTest.out, | ||
compare-to StaticTest.cmp, | ||
output-list RAM[256]%D1.6.1; | ||
|
||
set RAM[0] 256, // initializes the stack pointer | ||
|
||
repeat 200 { // enough cycles to complete the execution | ||
ticktock; | ||
} | ||
|
||
output; // the stack base |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// 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/07/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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// 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/07/MemoryAccess/StaticTest/StaticTestVME.tst | ||
|
||
load StaticTest.vm, | ||
output-file StaticTest.out, | ||
compare-to StaticTest.cmp, | ||
output-list RAM[256]%D1.6.1; | ||
|
||
set sp 256, // initializes the stack pointer | ||
|
||
repeat 11 { // StaticTest.vm has 11 instructions | ||
vmstep; | ||
} | ||
|
||
output; // the stack base |
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
@7 | ||
D=A | ||
@SP | ||
A=M | ||
M=D | ||
@SP | ||
M=M+1 | ||
@8 | ||
D=A | ||
@SP | ||
A=M | ||
M=D | ||
@SP | ||
M=M+1 | ||
@SP | ||
AM=M-1 | ||
M=D | ||
@SP | ||
AM=M-1 | ||
M=M+D | ||
@SP | ||
M=M+1 | ||
(END) | ||
@END | ||
0;JMP |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
| RAM[0] | RAM[256] | | ||
| 257 | 15 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
| RAM[0] | RAM[256] | | ||
| 257 | 15 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// 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/07/StackArithmetic/SimpleAdd/SimpleAdd.tst | ||
|
||
load SimpleAdd.asm, | ||
output-file SimpleAdd.out, | ||
compare-to SimpleAdd.cmp, | ||
output-list RAM[0]%D2.6.2 RAM[256]%D2.6.2; | ||
|
||
set RAM[0] 256, // initializes the stack pointer | ||
|
||
repeat 60 { // enough cycles to complete the execution | ||
ticktock; | ||
} | ||
|
||
output; // the stack pointer and the stack base |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
// 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/07/StackArithmetic/SimpleAdd/SimpleAdd.vm | ||
|
||
// Pushes and adds two constants. | ||
push constant 7 | ||
push constant 8 | ||
add |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
// 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/07/StackArithmetic/SimpleAdd/SimpleAddVME.tst | ||
|
||
load SimpleAdd.vm, | ||
output-file SimpleAdd.out, | ||
compare-to SimpleAdd.cmp, | ||
output-list RAM[0]%D2.6.2 RAM[256]%D2.6.2; | ||
|
||
set RAM[0] 256, // initializes the stack pointer | ||
|
||
repeat 3 { // SimpleAdd.vm has 3 instructions | ||
vmstep; | ||
} | ||
|
||
output; // the stack pointer and the stack base |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
| RAM[0] | RAM[256] | RAM[257] | RAM[258] | RAM[259] | RAM[260] | | ||
| 266 | -1 | 0 | 0 | 0 | -1 | | ||
| RAM[261] | RAM[262] | RAM[263] | RAM[264] | RAM[265] | | ||
| 0 | -1 | 0 | 0 | -91 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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/07/StackArithmetic/StackTest/StackTest.tst | ||
|
||
load StackTest.asm, | ||
output-file StackTest.out, | ||
compare-to StackTest.cmp, | ||
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; | ||
|
||
set RAM[0] 256, // initializes the stack pointer | ||
|
||
repeat 1000 { // enough cycles to complete the execution | ||
ticktock; | ||
} | ||
|
||
// outputs the stack pointer (RAM[0]) and | ||
// the stack contents: RAM[256]-RAM[265] | ||
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; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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/07/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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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/07/StackArithmetic/StackTest/StackTestVME.tst | ||
|
||
load StackTest.vm, | ||
output-file StackTest.out, | ||
compare-to StackTest.cmp, | ||
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; | ||
|
||
set RAM[0] 256, // initializes the stack pointer | ||
|
||
repeat 38 { // StackTest.vm consists of 38 instructions | ||
vmstep; | ||
} | ||
|
||
// outputs the stack pointer (RAM[0]) and | ||
// the stack contents: RAM[256]-RAM[265] | ||
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; |
Binary file not shown.
Oops, something went wrong.