// 	******* HACK ASM FILE GENERATED BY VM COMPILER *******
// 	VM  FILE: StackTest.vm
// 	COMPILER: JAVA_HACK_VM_COMPILER
// 	GEN TIME: 15-9-19 上午12:53


// 'push constant 17' (Line 0)
@17
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'push constant 17' (Line 1)
@17
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'eq' (Line 2)
@SP
AM=M-1
D=M
@SP
AM=M-1
D=M-D
@COMP.0.TRUE
D;JEQ
@COMP.0.FALSE
0;JMP
(COMP.0.TRUE)
@SP
A=M
M=-1
@SP
M=M+1
@COMP.0.END
0;JMP
(COMP.0.FALSE)
@SP
A=M
M=0
@SP
M=M+1
(COMP.0.END)
// 'push constant 17' (Line 3)
@17
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'push constant 16' (Line 4)
@16
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'eq' (Line 5)
@SP
AM=M-1
D=M
@SP
AM=M-1
D=M-D
@COMP.1.TRUE
D;JEQ
@COMP.1.FALSE
0;JMP
(COMP.1.TRUE)
@SP
A=M
M=-1
@SP
M=M+1
@COMP.1.END
0;JMP
(COMP.1.FALSE)
@SP
A=M
M=0
@SP
M=M+1
(COMP.1.END)
// 'push constant 16' (Line 6)
@16
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'push constant 17' (Line 7)
@17
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'eq' (Line 8)
@SP
AM=M-1
D=M
@SP
AM=M-1
D=M-D
@COMP.2.TRUE
D;JEQ
@COMP.2.FALSE
0;JMP
(COMP.2.TRUE)
@SP
A=M
M=-1
@SP
M=M+1
@COMP.2.END
0;JMP
(COMP.2.FALSE)
@SP
A=M
M=0
@SP
M=M+1
(COMP.2.END)
// 'push constant 892' (Line 9)
@892
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'push constant 891' (Line 10)
@891
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'lt' (Line 11)
@SP
AM=M-1
D=M
@SP
AM=M-1
D=M-D
@COMP.3.TRUE
D;JLT
@COMP.3.FALSE
0;JMP
(COMP.3.TRUE)
@SP
A=M
M=-1
@SP
M=M+1
@COMP.3.END
0;JMP
(COMP.3.FALSE)
@SP
A=M
M=0
@SP
M=M+1
(COMP.3.END)
// 'push constant 891' (Line 12)
@891
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'push constant 892' (Line 13)
@892
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'lt' (Line 14)
@SP
AM=M-1
D=M
@SP
AM=M-1
D=M-D
@COMP.4.TRUE
D;JLT
@COMP.4.FALSE
0;JMP
(COMP.4.TRUE)
@SP
A=M
M=-1
@SP
M=M+1
@COMP.4.END
0;JMP
(COMP.4.FALSE)
@SP
A=M
M=0
@SP
M=M+1
(COMP.4.END)
// 'push constant 891' (Line 15)
@891
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'push constant 891' (Line 16)
@891
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'lt' (Line 17)
@SP
AM=M-1
D=M
@SP
AM=M-1
D=M-D
@COMP.5.TRUE
D;JLT
@COMP.5.FALSE
0;JMP
(COMP.5.TRUE)
@SP
A=M
M=-1
@SP
M=M+1
@COMP.5.END
0;JMP
(COMP.5.FALSE)
@SP
A=M
M=0
@SP
M=M+1
(COMP.5.END)
// 'push constant 32767' (Line 18)
@32767
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'push constant 32766' (Line 19)
@32766
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'gt' (Line 20)
@SP
AM=M-1
D=M
@SP
AM=M-1
D=M-D
@COMP.6.TRUE
D;JGT
@COMP.6.FALSE
0;JMP
(COMP.6.TRUE)
@SP
A=M
M=-1
@SP
M=M+1
@COMP.6.END
0;JMP
(COMP.6.FALSE)
@SP
A=M
M=0
@SP
M=M+1
(COMP.6.END)
// 'push constant 32766' (Line 21)
@32766
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'push constant 32767' (Line 22)
@32767
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'gt' (Line 23)
@SP
AM=M-1
D=M
@SP
AM=M-1
D=M-D
@COMP.7.TRUE
D;JGT
@COMP.7.FALSE
0;JMP
(COMP.7.TRUE)
@SP
A=M
M=-1
@SP
M=M+1
@COMP.7.END
0;JMP
(COMP.7.FALSE)
@SP
A=M
M=0
@SP
M=M+1
(COMP.7.END)
// 'push constant 32766' (Line 24)
@32766
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'push constant 32766' (Line 25)
@32766
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'gt' (Line 26)
@SP
AM=M-1
D=M
@SP
AM=M-1
D=M-D
@COMP.8.TRUE
D;JGT
@COMP.8.FALSE
0;JMP
(COMP.8.TRUE)
@SP
A=M
M=-1
@SP
M=M+1
@COMP.8.END
0;JMP
(COMP.8.FALSE)
@SP
A=M
M=0
@SP
M=M+1
(COMP.8.END)
// 'push constant 57' (Line 27)
@57
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'push constant 31' (Line 28)
@31
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'push constant 53' (Line 29)
@53
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'add' (Line 30)
@SP
AM=M-1
D=M
@SP
AM=M-1
M=D+M
@SP
M=M+1
// 'push constant 112' (Line 31)
@112
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'sub' (Line 32)
@SP
AM=M-1
D=M
@SP
AM=M-1
M=M-D
@SP
M=M+1
// 'neg' (Line 33)
@SP
AM=M-1
M=-M
@SP
M=M+1
// 'and' (Line 34)
@SP
AM=M-1
D=M
@SP
AM=M-1
M=D&M
@SP
M=M+1
// 'push constant 82' (Line 35)
@82
D=A
@SP
A=M
M=D
@SP
M=M+1
// 'or' (Line 36)
@SP
AM=M-1
D=M
@SP
AM=M-1
M=D|M
@SP
M=M+1
// 'not' (Line 37)
@SP
AM=M-1
M=!M
@SP
M=M+1
