13 lines
253 B
OCaml
13 lines
253 B
OCaml
|
open! Ast
|
||
|
open! Base
|
||
|
|
||
|
let addr a = "@" ^ a
|
||
|
|
||
|
let label name = "(" ^ name ^ ")"
|
||
|
|
||
|
let translate command name =
|
||
|
match command with
|
||
|
| Label -> [ label name ]
|
||
|
| Goto -> [ addr name; "0;JMP" ]
|
||
|
| Ifgoto -> [ "@SP"; "AM=M-1"; "D=M"; addr name; "D;JNE" ]
|