summaryrefslogtreecommitdiff
path: root/projects/hack-vm/vminit.py
diff options
context:
space:
mode:
Diffstat (limited to 'projects/hack-vm/vminit.py')
-rw-r--r--projects/hack-vm/vminit.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/projects/hack-vm/vminit.py b/projects/hack-vm/vminit.py
new file mode 100644
index 0000000..73f79ce
--- /dev/null
+++ b/projects/hack-vm/vminit.py
@@ -0,0 +1,46 @@
+from .utils import *
+
+VMINIT_ASM = """@256
+D=A
+@SP
+M=D
+@{prog}$ret_init
+D=A
+@SP
+A=M
+M=D
+@LCL
+D=M
+@SP
+AM=M+1
+M=D
+@ARG
+D=M
+@SP
+AM=M+1
+M=D
+@THIS
+D=M
+@SP
+AM=M+1
+M=D
+@THAT
+D=M
+@SP
+AM=M+1
+M=D
+@SP
+MD=M+1
+@LCL
+M=D
+@5
+D=D-A
+@ARG
+M=D
+@Sys.init
+0;JMP
+({prog}$ret_init)
+"""
+
+def vminit(prog):
+ return VMINIT_ASM.format(prog=prog)