aboutsummaryrefslogtreecommitdiff
path: root/projects/08/FunctionCalls/StaticsTest
diff options
context:
space:
mode:
Diffstat (limited to 'projects/08/FunctionCalls/StaticsTest')
-rw-r--r--projects/08/FunctionCalls/StaticsTest/Class1.vm20
-rw-r--r--projects/08/FunctionCalls/StaticsTest/Class2.vm20
-rw-r--r--projects/08/FunctionCalls/StaticsTest/StaticsTest.cmp2
-rw-r--r--projects/08/FunctionCalls/StaticsTest/StaticsTest.tst17
-rw-r--r--projects/08/FunctionCalls/StaticsTest/StaticsTestVME.tst17
-rw-r--r--projects/08/FunctionCalls/StaticsTest/Sys.vm20
6 files changed, 96 insertions, 0 deletions
diff --git a/projects/08/FunctionCalls/StaticsTest/Class1.vm b/projects/08/FunctionCalls/StaticsTest/Class1.vm
new file mode 100644
index 0000000..c463537
--- /dev/null
+++ b/projects/08/FunctionCalls/StaticsTest/Class1.vm
@@ -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/08/FunctionCalls/StaticsTest/Class1.vm
+
+// Stores two supplied arguments in static[0] and static[1].
+function Class1.set 0
+push argument 0
+pop static 0
+push argument 1
+pop static 1
+push constant 0
+return
+
+// Returns static[0] - static[1].
+function Class1.get 0
+push static 0
+push static 1
+sub
+return
diff --git a/projects/08/FunctionCalls/StaticsTest/Class2.vm b/projects/08/FunctionCalls/StaticsTest/Class2.vm
new file mode 100644
index 0000000..94f2946
--- /dev/null
+++ b/projects/08/FunctionCalls/StaticsTest/Class2.vm
@@ -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/08/FunctionCalls/StaticsTest/Class2.vm
+
+// Stores two supplied arguments in static[0] and static[1].
+function Class2.set 0
+push argument 0
+pop static 0
+push argument 1
+pop static 1
+push constant 0
+return
+
+// Returns static[0] - static[1].
+function Class2.get 0
+push static 0
+push static 1
+sub
+return
diff --git a/projects/08/FunctionCalls/StaticsTest/StaticsTest.cmp b/projects/08/FunctionCalls/StaticsTest/StaticsTest.cmp
new file mode 100644
index 0000000..5589f1e
--- /dev/null
+++ b/projects/08/FunctionCalls/StaticsTest/StaticsTest.cmp
@@ -0,0 +1,2 @@
+| RAM[0] |RAM[261]|RAM[262]|
+| 263 | -2 | 8 |
diff --git a/projects/08/FunctionCalls/StaticsTest/StaticsTest.tst b/projects/08/FunctionCalls/StaticsTest/StaticsTest.tst
new file mode 100644
index 0000000..1b9194e
--- /dev/null
+++ b/projects/08/FunctionCalls/StaticsTest/StaticsTest.tst
@@ -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/08/FunctionCalls/StaticsTest/StaticsTest.tst
+
+load StaticsTest.asm,
+output-file StaticsTest.out,
+compare-to StaticsTest.cmp,
+output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1 RAM[262]%D1.6.1;
+
+set RAM[0] 256,
+
+repeat 2500 {
+ ticktock;
+}
+
+output;
diff --git a/projects/08/FunctionCalls/StaticsTest/StaticsTestVME.tst b/projects/08/FunctionCalls/StaticsTest/StaticsTestVME.tst
new file mode 100644
index 0000000..130ba66
--- /dev/null
+++ b/projects/08/FunctionCalls/StaticsTest/StaticsTestVME.tst
@@ -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/08/FunctionCalls/StaticsTest/StaticsTestVME.tst
+
+load, // loads all the VM files from the current directory.
+output-file StaticsTest.out,
+compare-to StaticsTest.cmp,
+output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1 RAM[262]%D1.6.1;
+
+set sp 261,
+
+repeat 36 {
+ vmstep;
+}
+
+output;
diff --git a/projects/08/FunctionCalls/StaticsTest/Sys.vm b/projects/08/FunctionCalls/StaticsTest/Sys.vm
new file mode 100644
index 0000000..3708322
--- /dev/null
+++ b/projects/08/FunctionCalls/StaticsTest/Sys.vm
@@ -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/08/FunctionCalls/StaticsTest/Sys.vm
+
+// Tests that different functions, stored in two different
+// class files, manipulate the static segment correctly.
+function Sys.init 0
+push constant 6
+push constant 8
+call Class1.set 2
+pop temp 0 // Dumps the return value
+push constant 23
+push constant 15
+call Class2.set 2
+pop temp 0 // Dumps the return value
+call Class1.get 0
+call Class2.get 0
+label WHILE
+goto WHILE