Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

C/C++ 語言版組譯器的用法

build

csienqu-teacher:06 csienqu$ make clean
rm -f *.o *.exe asm vm dasm
csienqu-teacher:06 csienqu$ make
g++ -std=c++11 asm.cpp -o asm
gcc -std=c99 vm.c -o vm
gcc -std=c99 dasm.c -o dasm

add.asm

csienqu-teacher:06 csienqu$ ./asm add
============= PASS1 ================
00:@2
01:D=A
02:@3
03:D=D+A
04:@0
05:M=D
============= PASS2 ================
00: @2                   0000000000000010 0002
01: D=A                  1110110000010000 ec10
02: @3                   0000000000000011 0003
03: D=D+A                1110000010010000 e090
04: @0                   0000000000000000 0000
05: M=D                  1110001100001000 e308
csienqu-teacher:06 csienqu$ ./vm add.bin
PC=0000 I=0002 A=0002 D=0000 m[A]=0000=0000
PC=0001 I=EC10 A=0002 D=0002 m[A]=0000=0000 a=0 c=30 d=2 j=0
PC=0002 I=0003 A=0003 D=0002 m[A]=0000=0000
PC=0003 I=E090 A=0003 D=0005 m[A]=0000=0000 a=0 c=02 d=2 j=0
PC=0004 I=0000 A=0000 D=0005 m[A]=0000=0000
PC=0005 I=E308 A=0000 D=0005 m[A]=0005=0005 a=0 c=0C d=1 j=0
exit program !

sum.asm

csienqu-teacher:06 csienqu$ ./asm sum
============= PASS1 ================
00:@10
01:D=A
02:@0
03:M=D
04:@i 
05:M=1 
06:@sum
07:M=0 
08:(LOOP)
symbol:LOOP address=8
08:@i 
09:D=M
10:@R0
11:D=D-M
12:@STOP
13:D;JGT
14:@i 
15:D=M
16:@sum
17:M=D+M
18:@i 
19:M=M+1 
20:@LOOP 
21:0;JMP
22:(STOP)
symbol:STOP address=22
22:@sum
23:D=M
24:@R1
25:M=D 
============= PASS2 ================
00: @10                  0000000000001010 000a
01: D=A                  1110110000010000 ec10
02: @0                   0000000000000000 0000
03: M=D                  1110001100001000 e308
04: @i                   0000000000010000 0010
05: M=1                  1110111111001000 efc8
06: @sum                 0000000000010001 0011
07: M=0                  1110101010001000 ea88
(LOOP)
08: @i                   0000000000010000 0010
09: D=M                  1111110000010000 fc10
0A: @R0                  0000000000000000 0000
0B: D=D-M                1111010011010000 f4d0
0C: @STOP                0000000000010110 0016
0D: D;JGT                1110001100000001 e301
0E: @i                   0000000000010000 0010
0F: D=M                  1111110000010000 fc10
10: @sum                 0000000000010001 0011
11: M=D+M                1111000010001000 f088
12: @i                   0000000000010000 0010
13: M=M+1                1111110111001000 fdc8
14: @LOOP                0000000000001000 0008
15: 0;JMP                1110101010000111 ea87
(STOP)
16: @sum                 0000000000010001 0011
17: D=M                  1111110000010000 fc10
18: @R1                  0000000000000001 0001
19: M=D                  1110001100001000 e308
csienqu-teacher:06 csienqu$ ./vm sum.bin
PC=0000 I=000A A=000A D=0000 m[A]=0000=0000
PC=0001 I=EC10 A=000A D=000A m[A]=0000=0000 a=0 c=30 d=2 j=0
PC=0002 I=0000 A=0000 D=000A m[A]=0000=0000
PC=0003 I=E308 A=0000 D=000A m[A]=000A=0010 a=0 c=0C d=1 j=0
PC=0004 I=0010 A=0010 D=000A m[A]=0000=0000
PC=0005 I=EFC8 A=0010 D=000A m[A]=0001=0001 a=0 c=3F d=1 j=0
PC=0006 I=0011 A=0011 D=000A m[A]=0000=0000
PC=0007 I=EA88 A=0011 D=000A m[A]=0000=0000 a=0 c=2A d=1 j=0
PC=0008 I=0010 A=0010 D=000A m[A]=0001=0001
PC=0009 I=FC10 A=0010 D=0001 m[A]=0001=0001 a=1 c=30 d=2 j=0
PC=000A I=0000 A=0000 D=0001 m[A]=000A=0010
PC=000B I=F4D0 A=0000 D=FFFFFFF7 m[A]=000A=0010 a=1 c=13 d=2 j=0
PC=000C I=0016 A=0016 D=FFFFFFF7 m[A]=0000=0000
PC=000D I=E301 A=0016 D=FFFFFFF7 m[A]=0000=0000 a=0 c=0C d=0 j=1
PC=000E I=0010 A=0010 D=FFFFFFF7 m[A]=0001=0001
PC=000F I=FC10 A=0010 D=0001 m[A]=0001=0001 a=1 c=30 d=2 j=0
PC=0010 I=0011 A=0011 D=0001 m[A]=0000=0000
PC=0011 I=F088 A=0011 D=0001 m[A]=0001=0001 a=1 c=02 d=1 j=0
PC=0012 I=0010 A=0010 D=0001 m[A]=0001=0001
PC=0013 I=FDC8 A=0010 D=0001 m[A]=0002=0002 a=1 c=37 d=1 j=0
PC=0014 I=0008 A=0008 D=0001 m[A]=0000=0000
PC=0015 I=EA87 A=0008 D=0001 m[A]=0000=0000 a=0 c=2A d=0 j=7
PC=0008 I=0010 A=0010 D=0001 m[A]=0002=0002
PC=0009 I=FC10 A=0010 D=0002 m[A]=0002=0002 a=1 c=30 d=2 j=0
PC=000A I=0000 A=0000 D=0002 m[A]=000A=0010
PC=000B I=F4D0 A=0000 D=FFFFFFF8 m[A]=000A=0010 a=1 c=13 d=2 j=0
PC=000C I=0016 A=0016 D=FFFFFFF8 m[A]=0000=0000
PC=000D I=E301 A=0016 D=FFFFFFF8 m[A]=0000=0000 a=0 c=0C d=0 j=1
PC=000E I=0010 A=0010 D=FFFFFFF8 m[A]=0002=0002
PC=000F I=FC10 A=0010 D=0002 m[A]=0002=0002 a=1 c=30 d=2 j=0
PC=0010 I=0011 A=0011 D=0002 m[A]=0001=0001
PC=0011 I=F088 A=0011 D=0002 m[A]=0003=0003 a=1 c=02 d=1 j=0
PC=0012 I=0010 A=0010 D=0002 m[A]=0002=0002
PC=0013 I=FDC8 A=0010 D=0002 m[A]=0003=0003 a=1 c=37 d=1 j=0
PC=0014 I=0008 A=0008 D=0002 m[A]=0000=0000
PC=0015 I=EA87 A=0008 D=0002 m[A]=0000=0000 a=0 c=2A d=0 j=7
PC=0008 I=0010 A=0010 D=0002 m[A]=0003=0003
PC=0009 I=FC10 A=0010 D=0003 m[A]=0003=0003 a=1 c=30 d=2 j=0
PC=000A I=0000 A=0000 D=0003 m[A]=000A=0010
PC=000B I=F4D0 A=0000 D=FFFFFFF9 m[A]=000A=0010 a=1 c=13 d=2 j=0
PC=000C I=0016 A=0016 D=FFFFFFF9 m[A]=0000=0000
PC=000D I=E301 A=0016 D=FFFFFFF9 m[A]=0000=0000 a=0 c=0C d=0 j=1
PC=000E I=0010 A=0010 D=FFFFFFF9 m[A]=0003=0003
PC=000F I=FC10 A=0010 D=0003 m[A]=0003=0003 a=1 c=30 d=2 j=0
PC=0010 I=0011 A=0011 D=0003 m[A]=0003=0003
PC=0011 I=F088 A=0011 D=0003 m[A]=0006=0006 a=1 c=02 d=1 j=0
PC=0012 I=0010 A=0010 D=0003 m[A]=0003=0003
PC=0013 I=FDC8 A=0010 D=0003 m[A]=0004=0004 a=1 c=37 d=1 j=0
PC=0014 I=0008 A=0008 D=0003 m[A]=0000=0000
PC=0015 I=EA87 A=0008 D=0003 m[A]=0000=0000 a=0 c=2A d=0 j=7
PC=0008 I=0010 A=0010 D=0003 m[A]=0004=0004
PC=0009 I=FC10 A=0010 D=0004 m[A]=0004=0004 a=1 c=30 d=2 j=0
PC=000A I=0000 A=0000 D=0004 m[A]=000A=0010
PC=000B I=F4D0 A=0000 D=FFFFFFFA m[A]=000A=0010 a=1 c=13 d=2 j=0
PC=000C I=0016 A=0016 D=FFFFFFFA m[A]=0000=0000
PC=000D I=E301 A=0016 D=FFFFFFFA m[A]=0000=0000 a=0 c=0C d=0 j=1
PC=000E I=0010 A=0010 D=FFFFFFFA m[A]=0004=0004
PC=000F I=FC10 A=0010 D=0004 m[A]=0004=0004 a=1 c=30 d=2 j=0
PC=0010 I=0011 A=0011 D=0004 m[A]=0006=0006
PC=0011 I=F088 A=0011 D=0004 m[A]=000A=0010 a=1 c=02 d=1 j=0
PC=0012 I=0010 A=0010 D=0004 m[A]=0004=0004
PC=0013 I=FDC8 A=0010 D=0004 m[A]=0005=0005 a=1 c=37 d=1 j=0
PC=0014 I=0008 A=0008 D=0004 m[A]=0000=0000
PC=0015 I=EA87 A=0008 D=0004 m[A]=0000=0000 a=0 c=2A d=0 j=7
PC=0008 I=0010 A=0010 D=0004 m[A]=0005=0005
PC=0009 I=FC10 A=0010 D=0005 m[A]=0005=0005 a=1 c=30 d=2 j=0
PC=000A I=0000 A=0000 D=0005 m[A]=000A=0010
PC=000B I=F4D0 A=0000 D=FFFFFFFB m[A]=000A=0010 a=1 c=13 d=2 j=0
PC=000C I=0016 A=0016 D=FFFFFFFB m[A]=0000=0000
PC=000D I=E301 A=0016 D=FFFFFFFB m[A]=0000=0000 a=0 c=0C d=0 j=1
PC=000E I=0010 A=0010 D=FFFFFFFB m[A]=0005=0005
PC=000F I=FC10 A=0010 D=0005 m[A]=0005=0005 a=1 c=30 d=2 j=0
PC=0010 I=0011 A=0011 D=0005 m[A]=000A=0010
PC=0011 I=F088 A=0011 D=0005 m[A]=000F=0015 a=1 c=02 d=1 j=0
PC=0012 I=0010 A=0010 D=0005 m[A]=0005=0005
PC=0013 I=FDC8 A=0010 D=0005 m[A]=0006=0006 a=1 c=37 d=1 j=0
PC=0014 I=0008 A=0008 D=0005 m[A]=0000=0000
PC=0015 I=EA87 A=0008 D=0005 m[A]=0000=0000 a=0 c=2A d=0 j=7
PC=0008 I=0010 A=0010 D=0005 m[A]=0006=0006
PC=0009 I=FC10 A=0010 D=0006 m[A]=0006=0006 a=1 c=30 d=2 j=0
PC=000A I=0000 A=0000 D=0006 m[A]=000A=0010
PC=000B I=F4D0 A=0000 D=FFFFFFFC m[A]=000A=0010 a=1 c=13 d=2 j=0
PC=000C I=0016 A=0016 D=FFFFFFFC m[A]=0000=0000
PC=000D I=E301 A=0016 D=FFFFFFFC m[A]=0000=0000 a=0 c=0C d=0 j=1
PC=000E I=0010 A=0010 D=FFFFFFFC m[A]=0006=0006
PC=000F I=FC10 A=0010 D=0006 m[A]=0006=0006 a=1 c=30 d=2 j=0
PC=0010 I=0011 A=0011 D=0006 m[A]=000F=0015
PC=0011 I=F088 A=0011 D=0006 m[A]=0015=0021 a=1 c=02 d=1 j=0
PC=0012 I=0010 A=0010 D=0006 m[A]=0006=0006
PC=0013 I=FDC8 A=0010 D=0006 m[A]=0007=0007 a=1 c=37 d=1 j=0
PC=0014 I=0008 A=0008 D=0006 m[A]=0000=0000
PC=0015 I=EA87 A=0008 D=0006 m[A]=0000=0000 a=0 c=2A d=0 j=7
PC=0008 I=0010 A=0010 D=0006 m[A]=0007=0007
PC=0009 I=FC10 A=0010 D=0007 m[A]=0007=0007 a=1 c=30 d=2 j=0
PC=000A I=0000 A=0000 D=0007 m[A]=000A=0010
PC=000B I=F4D0 A=0000 D=FFFFFFFD m[A]=000A=0010 a=1 c=13 d=2 j=0
PC=000C I=0016 A=0016 D=FFFFFFFD m[A]=0000=0000
PC=000D I=E301 A=0016 D=FFFFFFFD m[A]=0000=0000 a=0 c=0C d=0 j=1
PC=000E I=0010 A=0010 D=FFFFFFFD m[A]=0007=0007
PC=000F I=FC10 A=0010 D=0007 m[A]=0007=0007 a=1 c=30 d=2 j=0
PC=0010 I=0011 A=0011 D=0007 m[A]=0015=0021
PC=0011 I=F088 A=0011 D=0007 m[A]=001C=0028 a=1 c=02 d=1 j=0
PC=0012 I=0010 A=0010 D=0007 m[A]=0007=0007
PC=0013 I=FDC8 A=0010 D=0007 m[A]=0008=0008 a=1 c=37 d=1 j=0
PC=0014 I=0008 A=0008 D=0007 m[A]=0000=0000
PC=0015 I=EA87 A=0008 D=0007 m[A]=0000=0000 a=0 c=2A d=0 j=7
PC=0008 I=0010 A=0010 D=0007 m[A]=0008=0008
PC=0009 I=FC10 A=0010 D=0008 m[A]=0008=0008 a=1 c=30 d=2 j=0
PC=000A I=0000 A=0000 D=0008 m[A]=000A=0010
PC=000B I=F4D0 A=0000 D=FFFFFFFE m[A]=000A=0010 a=1 c=13 d=2 j=0
PC=000C I=0016 A=0016 D=FFFFFFFE m[A]=0000=0000
PC=000D I=E301 A=0016 D=FFFFFFFE m[A]=0000=0000 a=0 c=0C d=0 j=1
PC=000E I=0010 A=0010 D=FFFFFFFE m[A]=0008=0008
PC=000F I=FC10 A=0010 D=0008 m[A]=0008=0008 a=1 c=30 d=2 j=0
PC=0010 I=0011 A=0011 D=0008 m[A]=001C=0028
PC=0011 I=F088 A=0011 D=0008 m[A]=0024=0036 a=1 c=02 d=1 j=0
PC=0012 I=0010 A=0010 D=0008 m[A]=0008=0008
PC=0013 I=FDC8 A=0010 D=0008 m[A]=0009=0009 a=1 c=37 d=1 j=0
PC=0014 I=0008 A=0008 D=0008 m[A]=0000=0000
PC=0015 I=EA87 A=0008 D=0008 m[A]=0000=0000 a=0 c=2A d=0 j=7
PC=0008 I=0010 A=0010 D=0008 m[A]=0009=0009
PC=0009 I=FC10 A=0010 D=0009 m[A]=0009=0009 a=1 c=30 d=2 j=0
PC=000A I=0000 A=0000 D=0009 m[A]=000A=0010
PC=000B I=F4D0 A=0000 D=FFFFFFFF m[A]=000A=0010 a=1 c=13 d=2 j=0
PC=000C I=0016 A=0016 D=FFFFFFFF m[A]=0000=0000
PC=000D I=E301 A=0016 D=FFFFFFFF m[A]=0000=0000 a=0 c=0C d=0 j=1
PC=000E I=0010 A=0010 D=FFFFFFFF m[A]=0009=0009
PC=000F I=FC10 A=0010 D=0009 m[A]=0009=0009 a=1 c=30 d=2 j=0
PC=0010 I=0011 A=0011 D=0009 m[A]=0024=0036
PC=0011 I=F088 A=0011 D=0009 m[A]=002D=0045 a=1 c=02 d=1 j=0
PC=0012 I=0010 A=0010 D=0009 m[A]=0009=0009
PC=0013 I=FDC8 A=0010 D=0009 m[A]=000A=0010 a=1 c=37 d=1 j=0
PC=0014 I=0008 A=0008 D=0009 m[A]=0000=0000
PC=0015 I=EA87 A=0008 D=0009 m[A]=0000=0000 a=0 c=2A d=0 j=7
PC=0008 I=0010 A=0010 D=0009 m[A]=000A=0010
PC=0009 I=FC10 A=0010 D=000A m[A]=000A=0010 a=1 c=30 d=2 j=0
PC=000A I=0000 A=0000 D=000A m[A]=000A=0010
PC=000B I=F4D0 A=0000 D=0000 m[A]=000A=0010 a=1 c=13 d=2 j=0
PC=000C I=0016 A=0016 D=0000 m[A]=0000=0000
PC=000D I=E301 A=0016 D=0000 m[A]=0000=0000 a=0 c=0C d=0 j=1
PC=000E I=0010 A=0010 D=0000 m[A]=000A=0010
PC=000F I=FC10 A=0010 D=000A m[A]=000A=0010 a=1 c=30 d=2 j=0
PC=0010 I=0011 A=0011 D=000A m[A]=002D=0045
PC=0011 I=F088 A=0011 D=000A m[A]=0037=0055 a=1 c=02 d=1 j=0
PC=0012 I=0010 A=0010 D=000A m[A]=000A=0010
PC=0013 I=FDC8 A=0010 D=000A m[A]=000B=0011 a=1 c=37 d=1 j=0
PC=0014 I=0008 A=0008 D=000A m[A]=0000=0000
PC=0015 I=EA87 A=0008 D=000A m[A]=0000=0000 a=0 c=2A d=0 j=7
PC=0008 I=0010 A=0010 D=000A m[A]=000B=0011
PC=0009 I=FC10 A=0010 D=000B m[A]=000B=0011 a=1 c=30 d=2 j=0
PC=000A I=0000 A=0000 D=000B m[A]=000A=0010
PC=000B I=F4D0 A=0000 D=0001 m[A]=000A=0010 a=1 c=13 d=2 j=0
PC=000C I=0016 A=0016 D=0001 m[A]=0000=0000
PC=000D I=E301 A=0016 D=0001 m[A]=0000=0000 a=0 c=0C d=0 j=1
PC=0016 I=0011 A=0011 D=0001 m[A]=0037=0055
PC=0017 I=FC10 A=0011 D=0037 m[A]=0037=0055 a=1 c=30 d=2 j=0
PC=0018 I=0001 A=0001 D=0037 m[A]=0000=0000
PC=0019 I=E308 A=0001 D=0037 m[A]=0037=0055 a=0 c=0C d=1 j=0
exit program !