mirror of
https://github.com/avinal/The-VM-to-HACK-Translator.git
synced 2026-01-11 07:38:33 +05:30
example files
This commit is contained in:
2
Test-Files/FibonacciElement/FibonacciElement.cmp
Normal file
2
Test-Files/FibonacciElement/FibonacciElement.cmp
Normal file
@@ -0,0 +1,2 @@
|
||||
| RAM[0] |RAM[261]|
|
||||
| 262 | 3 |
|
||||
18
Test-Files/FibonacciElement/FibonacciElement.tst
Normal file
18
Test-Files/FibonacciElement/FibonacciElement.tst
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/08/FunctionCalls/FibonacciElement/FibonacciElement.tst
|
||||
|
||||
// FibonacciElement.asm results from translating both Main.vm and Sys.vm into
|
||||
// a single assembly program, stored in the file FibonacciElement.asm.
|
||||
|
||||
load FibonacciElement.asm,
|
||||
output-file FibonacciElement.out,
|
||||
compare-to FibonacciElement.cmp,
|
||||
output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1;
|
||||
|
||||
repeat 6000 {
|
||||
ticktock;
|
||||
}
|
||||
|
||||
output;
|
||||
17
Test-Files/FibonacciElement/FibonacciElementVME.tst
Normal file
17
Test-Files/FibonacciElement/FibonacciElementVME.tst
Normal file
@@ -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/FibonacciElement/FibonacciElementVME.tst
|
||||
|
||||
load, // Load all the VM files from the current directory
|
||||
output-file FibonacciElement.out,
|
||||
compare-to FibonacciElement.cmp,
|
||||
output-list RAM[0]%D1.6.1 RAM[261]%D1.6.1;
|
||||
|
||||
set sp 261,
|
||||
|
||||
repeat 110 {
|
||||
vmstep;
|
||||
}
|
||||
|
||||
output;
|
||||
30
Test-Files/FibonacciElement/Main.vm
Normal file
30
Test-Files/FibonacciElement/Main.vm
Normal file
@@ -0,0 +1,30 @@
|
||||
// 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/FibonacciElement/Main.vm
|
||||
|
||||
// Computes the n'th element of the Fibonacci series, recursively.
|
||||
// n is given in argument[0]. Called by the Sys.init function
|
||||
// (part of the Sys.vm file), which also pushes the argument[0]
|
||||
// parameter before this code starts running.
|
||||
|
||||
function Main.fibonacci 0
|
||||
push argument 0
|
||||
push constant 2
|
||||
lt // checks if n<2
|
||||
if-goto IF_TRUE
|
||||
goto IF_FALSE
|
||||
label IF_TRUE // if n<2, return n
|
||||
push argument 0
|
||||
return
|
||||
label IF_FALSE // if n>=2, returns fib(n-2)+fib(n-1)
|
||||
push argument 0
|
||||
push constant 2
|
||||
sub
|
||||
call Main.fibonacci 1 // computes fib(n-2)
|
||||
push argument 0
|
||||
push constant 1
|
||||
sub
|
||||
call Main.fibonacci 1 // computes fib(n-1)
|
||||
add // returns fib(n-1) + fib(n-2)
|
||||
return
|
||||
16
Test-Files/FibonacciElement/Sys.vm
Normal file
16
Test-Files/FibonacciElement/Sys.vm
Normal file
@@ -0,0 +1,16 @@
|
||||
// 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/FibonacciElement/Sys.vm
|
||||
|
||||
// Pushes a constant, say n, onto the stack, and calls the Main.fibonacii
|
||||
// function, which computes the n'th element of the Fibonacci series.
|
||||
// Note that by convention, the Sys.init function is called "automatically"
|
||||
// by the bootstrap code.
|
||||
|
||||
|
||||
function Sys.init 0
|
||||
push constant 4
|
||||
call Main.fibonacci 1 // computes the 4'th fibonacci element
|
||||
label WHILE
|
||||
goto WHILE // loops infinitely
|
||||
Reference in New Issue
Block a user