Skip to content

Commit

Permalink
SimpleAdd test passed
Browse files Browse the repository at this point in the history
  • Loading branch information
luismomm2110 committed Apr 6, 2021
1 parent 631dba6 commit 0b727d1
Show file tree
Hide file tree
Showing 295 changed files with 16,816 additions and 0 deletions.
2 changes: 2 additions & 0 deletions README.md
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.
2 changes: 2 additions & 0 deletions projects/07/MemoryAccess/BasicTest/BasicTest.cmp
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.
25 changes: 25 additions & 0 deletions projects/07/MemoryAccess/BasicTest/BasicTest.tst
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;
31 changes: 31 additions & 0 deletions projects/07/MemoryAccess/BasicTest/BasicTest.vm
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.
25 changes: 25 additions & 0 deletions projects/07/MemoryAccess/BasicTest/BasicTestVME.tst
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;
2 changes: 2 additions & 0 deletions projects/07/MemoryAccess/PointerTest/PointerTest.cmp
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 |
20 changes: 20 additions & 0 deletions projects/07/MemoryAccess/PointerTest/PointerTest.tst
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;
22 changes: 22 additions & 0 deletions projects/07/MemoryAccess/PointerTest/PointerTest.vm
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
20 changes: 20 additions & 0 deletions projects/07/MemoryAccess/PointerTest/PointerTestVME.tst
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;
2 changes: 2 additions & 0 deletions projects/07/MemoryAccess/StaticTest/StaticTest.cmp
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
|RAM[256]|
| 1110 |
17 changes: 17 additions & 0 deletions projects/07/MemoryAccess/StaticTest/StaticTest.tst
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
17 changes: 17 additions & 0 deletions projects/07/MemoryAccess/StaticTest/StaticTest.vm
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
17 changes: 17 additions & 0 deletions projects/07/MemoryAccess/StaticTest/StaticTestVME.tst
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.
25 changes: 25 additions & 0 deletions projects/07/StackArithmetic/SimpleAdd/SimpleAdd.asm
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
2 changes: 2 additions & 0 deletions projects/07/StackArithmetic/SimpleAdd/SimpleAdd.cmp
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
| RAM[0] | RAM[256] |
| 257 | 15 |
2 changes: 2 additions & 0 deletions projects/07/StackArithmetic/SimpleAdd/SimpleAdd.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
| RAM[0] | RAM[256] |
| 257 | 15 |
17 changes: 17 additions & 0 deletions projects/07/StackArithmetic/SimpleAdd/SimpleAdd.tst
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
9 changes: 9 additions & 0 deletions projects/07/StackArithmetic/SimpleAdd/SimpleAdd.vm
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
17 changes: 17 additions & 0 deletions projects/07/StackArithmetic/SimpleAdd/SimpleAddVME.tst
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
4 changes: 4 additions & 0 deletions projects/07/StackArithmetic/StackTest/StackTest.cmp
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 |
22 changes: 22 additions & 0 deletions projects/07/StackArithmetic/StackTest/StackTest.tst
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;
45 changes: 45 additions & 0 deletions projects/07/StackArithmetic/StackTest/StackTest.vm
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
22 changes: 22 additions & 0 deletions projects/07/StackArithmetic/StackTest/StackTestVME.tst
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 added projects/07/src/CodeWriter.class
Binary file not shown.
Loading

0 comments on commit 0b727d1

Please sign in to comment.