SearchWiki:

CC Course 2005

PmWiki

Recent Changes Printable View Page History Edit Page

Total Noob Compiler - Team Members:

  • Andreas Ban (aban [at] cosy.sbg.ac.at) 0120255
  • Bernhard Kast (bkast [at] cosy.sbg.ac.at) 0120422
  • Andreas Wagner (awagner [at] cosy.sbg.ac.at) 0120552


Checklist:

Grammar: DONE
Scanner: DONE (selfscanning)
Parser: In progress

  • DONE: Syntax parsing of actual grammar
  • DONE: Symbol table entries for import files (modules)
  • DONE: Symbol table entries for procedures and local variables
  • DONE: Parsing simple Records, nested Records (1 Level)
  • DONE: Parsing simple Procedures (no parameters)
  • DONE: Parsing call-by-Value Procedures
  • DONE: Parsing call-by-Reference Procedures (with arrays)
  • DONE: Parsing complex nested Records and recursive Records
  • DONE: Parsing File reading Operations
  • DONE: Parsing File writing Operations
  • DONE: Basic error handling
  • TODO: Sophisticated error handling

Generator: In progress

  • DONE: Code Generation for
    • simple Arithmetics
    • arrays with constant index access and variable access
    • if/while
    • saving of boolean results and true/false keywords
    • simple Records
    • simple Procedure calls (no Parameters)
    • call-by-Value Procedures (1 Parameter simple data type)
    • call-by-Reference Procedures (1 Parameter array (open <- <irony>thx to Java!</irony>))
    • complex Records
    • Character semantics
    • File reading
    • File writing
    • Basic Output System
  • TODO: Modules

Virtual Machine: Only minor additions needed

  • DONE: simple Arithmetics
  • DONE: Debug Branches
  • DONE: Debug Output for instructions and Mem after executing Code
  • DONE: Stack and Subroutine/Procedure call semantics


Files and Links:

Project work (source code + report) -> Attach:TNC.zip
Source code only -> Attach:TNCsource.zip
Project report only -> Attach:TNCreport.zip
Project presentation -> Attach:presentation.pdf
EBNF grammar -> Attach:grammar.pdf
Click here to view our team working hard -> Attach:team.pdf
Click here to visit the team members after finishing the project


Best Of Comments:

  • ok machen wir es halt dreckig mit cast, eh schon wurscht so funktionierts in beide richtungen...
  • we had problems with ascii encoding so we took the java way of "casting everthing into another thing" and it works in both directions
  • save... we fixed a (or 2) bug (s) with this :)
  • when you move the scrollbar fast and look on the left side of the code you can see the waves moving!
  • In case of boredom add handling of Try/Catch here
  • TODO: ?
  • hm das ist nicht gut oder? glaub das ist ein fetter bug
  • Instruktionen mittels Stringtokenizer in einzelteile zerfledern, inhorrend ineffizent aber sau gmiadlich

Baby's Words:

First:
0: STW R0, R0, [-1]
1: ADDI R1, R0, 500
2: STW R1, R0, [-1]
3: LDW R2, R0, [-1]
4: LDW R3, R0, [-1]
5: ADD R2, R2, R3
6: ADDI R2, R2, 200
7: STW R2, R0, [-1]
8: LDW R3, R0, [-1]
9: ADDI R4, R0, 1
10: BNE R3, R4, {4}
11: ADDI R3, R0, 256
12: STW R3, R0, [-2]
13: BEQ R0, R0, {3}
14: ADDI R4, R0, -256
15: STW R4, R0, [-2]

Latest:
000 : ADDI R30 R0 -88
001 : STW R31 R30 [-1]
002 : STW R29 R30 [-2]
003 : ADDI R29 R30 -2
004 : ADDI R30 R29 40
005 : ADDI R1 R0 10
006 : STW R1 R0 [-1]
007 : ADDI R1 R0 20
008 : STW R1 R0 [-2]
009 : ADDI R1 R0 30
010 : STW R1 R29 [-1]
011 : ADDI R1 R0 40
012 : STW R1 R29 [-2]
013 : ADDI R1 R0 50
014 : STW R1 R29 [-3]
015 : LDW R1 R29 [-1]
016 : ADDI R1 R1 60
017 : STW R1 R29 [-1]
018 : ADDI R30 R29 -20
019 : LDW R31 R29 [1]
020 : LDW R29 R29 [0]
021 : JSR R0 R0 R31
022 : STW R31 R30 [-1]
023 : STW R29 R30 [-2]
024 : ADDI R29 R30 -2
025 : ADDI R30 R29 40
026 : ADDI R1 R0 60
027 : STW R1 R29 [-4]
028 : BSR R0 R0 {-27}
029 : ADDI R30 R29 -20
030 : LDW R31 R29 [1]
031 : LDW R29 R29 [0]
032 : JSR R0 R0 R31
033 : BSR R0 R0 {-32}
034 : BSR R0 R0 {-33}
035 : BSR R0 R0 {-34}

Last:
000 : ADDI R30 R0 -73
001 : BEQ R0 R0 {1}
002 : ADDI R2 R0 0
003 : ADDI R1 R0 116
004 : PFR R1 FR0? [2]
005 : ADDI R2 R2 1
006 : ADDI R1 R0 101
007 : PFR R1 FR0? [2]
008 : ADDI R2 R2 1
009 : ADDI R1 R0 115
010 : PFR R1 FR0? [2]
011 : ADDI R2 R2 1
012 : ADDI R1 R0 116
013 : PFR R1 FR0? [2]
014 : ADDI R2 R2 1
015 : ADDI R1 R0 102
016 : PFR R1 FR0? [2]
017 : ADDI R2 R2 1
018 : ADDI R1 R0 105
019 : PFR R1 FR0? [2]
020 : ADDI R2 R2 1
021 : ADDI R1 R0 108
022 : PFR R1 FR0? [2]
023 : ADDI R2 R2 1
024 : ADDI R1 R0 101
025 : PFR R1 FR0? [2]
026 : ADDI R2 R2 1
027 : ADDI R1 R0 46
028 : PFR R1 FR0? [2]
029 : ADDI R2 R2 1
030 : ADDI R1 R0 116
031 : PFR R1 FR0? [2]
032 : ADDI R2 R2 1
033 : ADDI R1 R0 120
034 : PFR R1 FR0? [2]
035 : ADDI R2 R2 1
036 : ADDI R1 R0 116
037 : PFR R1 FR0? [2]
038 : ADDI R2 R2 1
039 : ADDI R1 R0 255
040 : PFR R1 FR0? [2]
041 : ADDI R2 R0 0
042 : ADDI R1 R0 119
043 : PFR R1 FR1? [2]
044 : ADDI R2 R2 1
045 : ADDI R1 R0 114
046 : PFR R1 FR1? [2]
047 : ADDI R2 R2 1
048 : ADDI R1 R0 105
049 : PFR R1 FR1? [2]
050 : ADDI R2 R2 1
051 : ADDI R1 R0 116
052 : PFR R1 FR1? [2]
053 : ADDI R2 R2 1
054 : ADDI R1 R0 101
055 : PFR R1 FR1? [2]
056 : ADDI R2 R2 1
057 : ADDI R1 R0 102
058 : PFR R1 FR1? [2]
059 : ADDI R2 R2 1
060 : ADDI R1 R0 105
061 : PFR R1 FR1? [2]
062 : ADDI R2 R2 1
063 : ADDI R1 R0 108
064 : PFR R1 FR1? [2]
065 : ADDI R2 R2 1
066 : ADDI R1 R0 101
067 : PFR R1 FR1? [2]
068 : ADDI R2 R2 1
069 : ADDI R1 R0 46
070 : PFR R1 FR1? [2]
071 : ADDI R2 R2 1
072 : ADDI R1 R0 116
073 : PFR R1 FR1? [2]
074 : ADDI R2 R2 1
075 : ADDI R1 R0 120
076 : PFR R1 FR1? [2]
077 : ADDI R2 R2 1
078 : ADDI R1 R0 116
079 : PFR R1 FR1? [2]
080 : ADDI R2 R2 1
081 : ADDI R1 R0 255
082 : PFR R1 FR1? [2]
083 : BSR R0 R0 {4}
084 : BSR R0 R0 {21}
085 : BSR R0 R0 {36}
086 : BEQ R0 R0 {110}
087 : STW R31 R30 [-1]
088 : STW R29 R30 [-2]
089 : ADDI R29 R30 -2
090 : ADDI R30 R29 -40
091 : LDW R1 R29 [3]
092 : ADDI R3 R0 0
093 : ADDI R4 R0 32
094 : RDC R2 FR0? [3]
095 : STW R2 R3 [-33]
096 : ADDI R3 R3 1
097 : ADDI R4 R4 -1
098 : BNE R32 R0 {2}
099 : BNE R4 R0 {-5}
100 : ADDI R32 R0 0
101 : ADDI R30 R29 2
102 : LDW R31 R29 [1]
103 : LDW R29 R29 [0]
104 : JSR R0 R0 R31
105 : STW R31 R30 [-1]
106 : STW R29 R30 [-2]
107 : ADDI R29 R30 -2
108 : ADDI R30 R29 -40
109 : LDW R2 R29 [3]
110 : ADDI R4 R0 0
111 : ADDI R5 R0 32
112 : LDW R3 R4 [-33]
113 : 81 R3 R1 {4}
114 : ADDI R4 R4 1
115 : ADDI R5 R5 -1
116 : BNE R5 R0 {-4}
117 : ADDI R30 R29 2
118 : LDW R31 R29 [1]
119 : LDW R29 R29 [0]
120 : JSR R0 R0 R31
121 : STW R31 R30 [-1]
122 : STW R29 R30 [-2]
123 : ADDI R29 R30 -2
124 : ADDI R30 R29 -40
125 : LDW R3 R29 [3]
126 : LDW R4 R0 [-33]
127 : PTC R4 R0 R0
128 : LDW R4 R0 [-32]
129 : PTC R4 R0 R0
130 : LDW R4 R0 [-31]
131 : PTC R4 R0 R0
132 : LDW R4 R0 [-30]
133 : PTC R4 R0 R0
134 : LDW R4 R0 [-29]
135 : PTC R4 R0 R0
136 : LDW R4 R0 [-28]
137 : PTC R4 R0 R0
138 : LDW R4 R0 [-27]
139 : PTC R4 R0 R0
140 : LDW R4 R0 [-26]
141 : PTC R4 R0 R0
142 : LDW R4 R0 [-25]
143 : PTC R4 R0 R0
144 : LDW R4 R0 [-24]
145 : PTC R4 R0 R0
146 : LDW R4 R0 [-23]
147 : PTC R4 R0 R0
148 : LDW R4 R0 [-22]
149 : PTC R4 R0 R0
150 : LDW R4 R0 [-21]
151 : PTC R4 R0 R0
152 : LDW R4 R0 [-20]
153 : PTC R4 R0 R0
154 : LDW R4 R0 [-19]
155 : PTC R4 R0 R0
156 : LDW R4 R0 [-18]
157 : PTC R4 R0 R0
158 : LDW R4 R0 [-17]
159 : PTC R4 R0 R0
160 : LDW R4 R0 [-16]
161 : PTC R4 R0 R0
162 : LDW R4 R0 [-15]
163 : PTC R4 R0 R0
164 : LDW R4 R0 [-14]
165 : PTC R4 R0 R0
166 : LDW R4 R0 [-13]
167 : PTC R4 R0 R0
168 : LDW R4 R0 [-12]
169 : PTC R4 R0 R0
170 : LDW R4 R0 [-11]
171 : PTC R4 R0 R0
172 : LDW R4 R0 [-10]
173 : PTC R4 R0 R0
174 : LDW R4 R0 [-9]
175 : PTC R4 R0 R0
176 : LDW R4 R0 [-8]
177 : PTC R4 R0 R0
178 : LDW R4 R0 [-7]
179 : PTC R4 R0 R0
180 : LDW R4 R0 [-6]
181 : PTC R4 R0 R0
182 : LDW R4 R0 [-5]
183 : PTC R4 R0 R0
184 : LDW R4 R0 [-4]
185 : PTC R4 R0 R0
186 : LDW R4 R0 [-3]
187 : PTC R4 R0 R0
188 : LDW R4 R0 [-2]
189 : PTC R4 R0 R0
190 : ADDI R4 R0 10
191 : PTC R4 R0 R0
192 : ADDI R30 R29 2
193 : LDW R31 R29 [1]
194 : LDW R29 R29 [0]
195 : JSR R0 R0 R31
196 : ADD R0 R0 R0

Edit Page - Page History - Printable View - Recent Changes - WikiHelp - SearchWiki
Page last modified on July 19, 2005, at 04:02 AM