       "D=M" 
       "A=A-1"
       "D=M-D"
-      ~(str "@FALSE" index) 
+      ~(str "@FALSE-" env/cur-vm-file "." index) 
       ~(str "D;" op)
       "@SP" 
       "A=M-1" 
       "M=-1"
-      ~(str "@CONTINUE" index) 
+      ~(str "@CONTINUE-" env/cur-vm-file "." index) 
       "0;JMP" 
-      ~(str "(FALSE" index ")")
+      ~(str "(FALSE" env/cur-vm-file "." index ")")
       "@SP" 
       "A=M-1" 
       "M=0"
-      ~(str "(CONTINUE" index ")"))))
+      ~(str "(CONTINUE" env/cur-vm-file "." index ")"))))
 

      (cond 
        (= seg "constant") `(~(str "@" index) 
                             "D=A")
        :else `(~(str "@" seg) 
                "D=M" 
                (str "@" index) 
                "A=D+A" 
                "D=M"))
      assignment)))

(defn pop-code 
  [seg index] 
  `(~(str "@" seg) 
    "D=M" 
    ~(str "@" index) 
    "D=D+A" 
    "@R13" 
    "M=D" 
    "@SP" 
    "AM=M-1" 
    "D=M" 
    "@R13" 
    "A=M" 
    "M=D"))

(defn unary-arith-code 
  [cmd] 

(ns translator.code-snippet
  (:require [translator.env :as env])) 

(defn init-code 
  [] 
  '("@256" "D=A" "@SP" "M=D")) 

(defn push-code 
  [seg index]
