blob: 6716ad94bafed60e298c2623deea95d77ab620e3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
from .utils import *
# common preamble to add, sub, and, or
BINARY_COMMON_ASM = """@SP
AM=M-1
D=M
A=A-1
"""
# common preamble to neg and not
UNARY_COMMON_ASM = """@SP
A=M-1
"""
ARITH_LOGIC_ASM = {
"add": BINARY_COMMON_ASM + "M=D+M\n",
"sub": BINARY_COMMON_ASM + "M=M-D\n",
"and": BINARY_COMMON_ASM + "M=D&M\n",
"or": BINARY_COMMON_ASM + "M=D|M\n",
"neg": UNARY_COMMON_ASM + "M=-M\n",
"not": UNARY_COMMON_ASM + "M=!M\n",
}
def translate_arith_logic(command):
return ARITH_LOGIC_ASM[command]
|