[gforth] / res / PP-compiler.tex  

gforth: res/PP-compiler.tex


1 : andi 1.1 \documentclass[11pt,a4paper]{article}
2 :     %\usepackage{latexsym}
3 :     \usepackage{url}
4 :     %\usepackage{times}
5 :     \usepackage{comment}
6 :    
7 :     \pagestyle{plain}
8 :     \setlength{\textwidth}{16truecm}
9 :     \setlength{\textheight}{24truecm}
10 :     \setlength{\oddsidemargin}{-0.3truecm}
11 :     \setlength{\evensidemargin}{-0.3truecm}
12 :     \setlength{\topmargin}{0.0truecm}
13 :     \setlength{\topskip}{0.0truecm}
14 :     \setlength{\headheight}{0.0truecm}
15 :     \setlength{\headsep}{0.0truecm}
16 :    
17 :     \newcommand{\emn}[1]{{\em #1\/}}
18 :     \newcommand{\NOTE}[1]{{\medskip\bf #1\medskip}}
19 :    
20 :     \title{\bf PP \emph{Compilation Techniques for Robust Embedded Systems}}
21 :    
22 :     \author{{\sc Ulrich Schmid}\\
23 :     s@ecs.tuwien.ac.at
24 :     }
25 :    
26 :     \bibliographystyle{unsrt}
27 :    
28 :     \begin{document}
29 :     \maketitle
30 :    
31 : andi 1.2 PP leader: \emph{Jens Knoop and Andreas Krall}
32 : andi 1.1
33 : andi 1.2 Associated researchers: \emph{}
34 : andi 1.1
35 :    
36 :    
37 :     \subsubsection*{Motivation:}
38 :     %\emph{Informal description of the purpose of the PP (3-5 lines)}
39 :     Every embedded system consists of software which is written in a high
40 :     level language, compiled to machine language and executed on a
41 :     processor. For robust embedded systems new verified compilation
42 :     techniques are necessary to optimize for performance, power, space,
43 :     concurrency and reliability.
44 :    
45 :     \subsubsection*{State of the art and related work:}
46 :     %\emph{Briefly describe the scientific state of the art (20-30 lines)}
47 :    
48 : andi 1.2 %Compilation Techniques for Reliability
49 :    
50 :     Because of the exponential increase of the number of transistors and
51 :     the continuing decrease of the feature sizes of current processors
52 :     soft errors mainly caused by energetic particles are becoming an
53 :     important design issue for robust embedded systems. Blome et
54 :     al.~\cite{Blome+06} observed that a majority of faults that affect the
55 :     architectural state of a processor come from the register file. Lee
56 :     and Shrivastava and proposed different solutions to cope with this
57 :     problem. The first assigns variables depending on their lifetime to
58 :     either the ECC protected or the unprotected part of a register file to
59 :     balance energy consumption and reliability \cite{LeeShrivastava09a}.
60 :     The second spills registers to ECC protected memory if the register
61 :     contents are not used for a long period \cite{LeeShrivastava09c}.
62 : andi 1.3 There exist complete software solutions which use different forms
63 :     of code duplications \cite{Reis+05}, which do failure virutalization
64 :     \cite{WapplerMueller08} or which use techniques like control flow
65 :     checking \cite{}
66 : andi 1.1
67 : andi 1.2 %ADL and Instruction Set Simulators \cite{MishraDutt08}
68 : andi 1.1
69 : andi 1.2 Compiler Verification \cite{Hoare,1328444,1314860}
70 : andi 1.1
71 :     WCET \cite{}
72 :    
73 :     \subsubsection*{Previous achievements:}
74 :     %\emph{Brief description of your own contributions to the related
75 :     %scientific state-of-the art (5-10 lines)}
76 :     Jens Knoop has a long history on work on program analysis with topics
77 :     like partial redundancy elimination or lazy code motion
78 :     \cite{knoop:DSP:2008:1575,conf/cc/XueK06,scholz04}. Recently he
79 :     changed his research focus on worst case execution time analysis
80 :     \cite{SchrSchoKn09,Prantl:WLPE2008,prantl_et_al:DSP:2008:1661,
81 :     kirner_et_al:DSP:2008:1657,kirner_et_al:DSP:2007:1197}. He is involved
82 :     in the organization of many compiler conferences and since 2002 program
83 :     cochair of the yearly workshop on compiler optimization meets verification.
84 :    
85 :     Andreas Krall does research in the area of architecture description
86 :     languages and the automatic generation of highly optimizing compilers,
87 :     efficient instruction set simulators and hardware from one single
88 :     specification of a processor \cite{BrFeKrRi09,BrEbKr07,FaKrHo07,
89 :     FarKrStBrand06,Krall+04micro}. An important focus is on optimization
90 :     techniques for embedded processors
91 :     \cite{EbBrSchKrWiKa08,MeKr07,PrKrHo06,HiKr03} as he lead the Christian
92 :     Doppler research laboratory {\em compilation techniques for embedded
93 :     processors} with partners from industry (Infineon, OnDemand
94 :     Microelectronics).
95 :    
96 :    
97 :     \subsubsection*{Goals (first 4 years):}
98 :     %\emph{Description of the research
99 :     %topics to be addressed during the first 4 years. Make sure to explicitly
100 :     %stress what the significant additions to the scientific knowledge are,
101 :     %and why they are important. (30-40 lines)}
102 :    
103 :     New modeling and representation techniques of non-functional program and system properties on the programming and intermediate language levels
104 :     Definitions and measures of non-functional program and system properties (performance, time, space/memory, power, concurrency).
105 :     Modeling and representation of these properties alongside with the programming languages semantics
106 :     Adapting and enhancing state-of-the-art compilation techniques towards non-functional property and platform awareness
107 :     New functional and non-functional property and platform-aware compilation techniques
108 :     Analyses for non-functional program and system properties
109 :     Functional and non-functional property and platform-aware code generation techniques
110 :     Enabling validation and verification throughout the compilation process
111 :     Techniques for reducing or eliminating trusted code, annotation, etc., bases
112 :    
113 :    
114 :     \subsubsection*{Work Plan (first 4 years):}
115 :     %\emph{Brief description of how
116 :     %you intend to conduct the actual research during the first 4 years. Be sure
117 :     %to also describe and (coarsely) quantify the resources (staff, cost of
118 :     %special equipment) required for this work in a table. (20-30 lines)}
119 :    
120 :    
121 :    
122 : andi 1.2 (1) Specification and efficient simulation of reliable processors (partial redundancy,
123 : andi 1.1 ECC, lockstep etc) and compiler optimizations to exploit/balance reliabiliy features.
124 : andi 1.2 Connection with CESAR NN1
125 : andi 1.1
126 : andi 1.2 (2) translation verification, specification of semantics of IRs solving
127 : andi 1.1 subproblems. NN1 + NN2
128 :    
129 : andi 1.2 (3) WCET NN3
130 :    
131 : andi 1.1
132 :     \begin{tabular}{llll}
133 :     \hline
134 : andi 1.2 {\bf Pos} & {\bf Type} & {\bf Description} & {\bf Duration} \\
135 :     NN1 & PhD & reliable compilation / simulation & 4 years \\
136 :     NN2 & PhD & compiler verificationi & 4 years \\
137 :     NN3 & PhD & WCET & 4 years \\
138 : andi 1.1 \hline
139 :     \end{tabular}
140 :    
141 :    
142 :     \subsubsection*{Goals (last 4 years):}
143 :     %\emph{Brief description of the
144 :     %eesearch topics to be addressed during the last 4 years. Make sure to
145 :     %explicitly stress what the significant additions to the scientific
146 :     %knowledge are, and why they are important. (20-30 lines)}
147 :    
148 :     New programming languages and compilers for RESs
149 :     Non-functional properties and requirements as first-class language and compiler citizens
150 :     New compilation techniques enabling a uniform and integrated approach
151 :     for ensuring functional and non-functional program and system requirements
152 :     Replacing trust by proof
153 :     Certifying compilation, proof-carrying code, translation validation
154 :     Verified compilers, verifying compilation for RESs
155 :     Making legacy applications fit to and available on RESs
156 :     Techniques for adjusting and decompiling legacy applications
157 :    
158 :     \subsubsection*{Collaboration with other PPs:}
159 :     %\emph{List the PPs you are expecting to collaborate with, and describe briefly
160 :     %the topic and nature of such a collaboration. (10-20 lines)}
161 :    
162 :     \begin{itemize}
163 :     \item PP Composition of Non-functional Requirements [I.S.T.A./Henzinger]:
164 :     Links to specification and modeling of timing properties, to execution
165 :     models, hardware and software models.
166 :     \item PP Composition and Predictability in RES Architectures
167 :     [E182/Puschner]: Links to hard- and software models for time
168 :     predictable systems, verification of timing behaviour.
169 :     \item PP Formal Verification for Robustness [E184/Veith]: Links to software
170 :     model checking and testing of code (on source code and intermediate
171 :     code levels), support for program analysis and transformation.
172 :     \item PP Modeling \& Analysis of Robust Distributed Systems [E182/Schmid]:
173 :     Links to functional and non-functional system requirements,
174 :     distribution, concurrency.
175 :     \end{itemize}
176 :    
177 :     \subsubsection*{External Collaborations:}
178 :     %\emph{List envisioned international and national collaborations, and
179 :     %describe briefly the topic and nature of such a collaboration. (5-10
180 :     %lines)}
181 :    
182 : andi 1.2 Aviral Shrivastava, Arizona State University, Tempe, AZ, USA
183 :    
184 :     Wolf Zimmermann, Universit\"at Halle, Halle, Germany
185 : andi 1.1
186 :     \begin{comment}
187 :     %Bitte hier die Bibtex-Entries einfuellen, z.B.,
188 :    
189 :    
190 :     ------------------------------------
191 :    
192 :     @article{Hoare,
193 :     author = {Tony Hoare},
194 :     title = {The verifying compiler: A grand challenge for computing research},
195 :     journal = {Journal of the ACM},
196 :     volume = {50},
197 :     number = {1},
198 :     year = {2003},
199 :     issn = {0004-5411},
200 :     pages = {63--69},
201 :     doi = {http://doi.acm.org/10.1145/602382.602403},
202 :     publisher = {ACM},
203 :     address = {New York, NY, USA},
204 :     }
205 :    
206 :     @article{1328444,
207 :     author = {Jean-Baptiste Tristan and Xavier Leroy},
208 :     title = {Formal verification of translation validators: a case study on instruction scheduling optimizations},
209 :     journal = {SIGPLAN Not.},
210 :     volume = {43},
211 :     number = {1},
212 :     year = {2008},
213 :     issn = {0362-1340},
214 :     pages = {17--27},
215 :     doi = {http://doi.acm.org/10.1145/1328897.1328444},
216 :     publisher = {ACM},
217 :     address = {New York, NY, USA},
218 :     }
219 :    
220 :     @article{1314860,
221 :     author = {Jan Olaf Blech and Arnd Poetzsch-Heffter},
222 :     title = {A Certifying Code Generation Phase},
223 :     journal = {Electron. Notes Theor. Comput. Sci.},
224 :     volume = {190},
225 :     number = {4},
226 :     year = {2007},
227 :     issn = {1571-0661},
228 :     pages = {65--82},
229 :     doi = {http://dx.doi.org/10.1016/j.entcs.2007.09.008},
230 :     publisher = {Elsevier Science Publishers B. V.},
231 :     address = {Amsterdam, The Netherlands, The Netherlands},
232 :     }
233 :    
234 :     @INPROCEEDINGS{LeeShrivastava09,
235 :     TITLE = {A Compiler Optimization to Reduce Soft Errors in Register Files},
236 :     AUTHOR = {Jongeun Lee and Aviral Shrivastava},
237 :     BOOKTITLE = {ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems},
238 :     EDITOR = {Mahmut Kandemir},
239 :     PUBLISHER = {ACM},
240 :     PAGES = {??--??},
241 :     ADDRESS = {Dublin},
242 :     MONTH = {June},
243 :     YEAR = {2009},
244 :     }
245 :    
246 :     @BOOK{MishraDutt08,
247 :     TITLE = {Processor Description Languages},
248 :     AUTHOR = {Prabhat Mishra and Nikil Dutt (Editor)},
249 :     PUBLISHER = {Morgan Kaufmann},
250 :     YEAR = {2008},
251 :     }
252 :    
253 :    
254 :    
255 :     %Eigene Referenzen ab hier.
256 :    
257 :     @InProceedings{SchrSchoKn09,
258 :     TITLE = "Adding Timing-Awareness to {AUTOSAR} Basic-Software - A Component Based Approach",
259 :     AUTHOR = "Dietmar Schreiner and Markus Schordan and Jens Knoop",
260 :     BOOKTITLE = "12th IEEE International Symposium on Object/component/service-oriented
261 :     Real-time distributed Computing (ISORC 2009)",
262 :     PUBLISHER = "IEEE",
263 :     ADDRESS = "Tokyo, Japan",
264 :     YEAR = "2009",
265 :     MONTH = "March",
266 :     PAGES = "288--292",
267 :     }
268 :    
269 :     @inproceedings{Prantl:WLPE2008,
270 :     Address = {Udine, Italy},
271 :     Author = {Adrian Prantl and Jens Knoop and Markus Schordan and Markus Triska},
272 :     Booktitle = {The 18th Workshop on Logic-based methods in Programming Environments (WLPE 2008)},
273 :     Month = {December 12},
274 :     Title = {Constraint solving for high-level WCET analysis},
275 :     Year = {2008},
276 :     URL = {http://costa.tuwien.ac.at/papers/wlpe08.pdf}
277 :     }
278 :    
279 :     @InProceedings{prantl_et_al:DSP:2008:1661,
280 :     author = "Adrian Prantl and Markus Schordan and Jens Knoop",
281 :     title = "TuBound - {A} Conceptually New Tool for Worst-Case
282 :     Execution Time Analysis",
283 :     booktitle = "8th Intl. Workshop on Worst-Case Execution Time (WCET)
284 :     Analysis",
285 :     year = "2008",
286 :     editor = "Raimund Kirner",
287 :     publisher = "Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik,
288 :     Germany",
289 :     address = "Dagstuhl, Germany",
290 :     URL = "http://drops.dagstuhl.de/opus/volltexte/2008/1661",
291 :     annote = "Keywords: Worst-case execution time (WCET) analysis,
292 :     Tool Chain, Flow Constraints, Source-To-Source",
293 :     ISBN = "978-3-939897-10-1",
294 :     note = "also published in print by Austrian Computer Society
295 :     (OCG) under ISBN 978-3-85403-237-3",
296 :     }
297 :    
298 :     @InProceedings{kirner_et_al:DSP:2008:1657,
299 :     author = "Raimund Kirner and Albrecht Kadlec and Adrian Prantl
300 :     and Markus Schordan and Jens Knoop",
301 :     title = "Towards a Common {WCET} Annotation Language: Essential
302 :     Ingredients",
303 :     booktitle = "8th Intl. Workshop on Worst-Case Execution Time (WCET)
304 :     Analysis",
305 :     year = "2008",
306 :     editor = "Raimund Kirner",
307 :     publisher = "Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik,
308 :     Germany",
309 :     address = "Dagstuhl, Germany",
310 :     URL = "http://drops.dagstuhl.de/opus/volltexte/2008/1657",
311 :     annote = "Keywords: Worst-case execution time (WCET) analysis,
312 :     annotation languages, WCET annotation language
313 :     challenge",
314 :     ISBN = "978-3-939897-10-1",
315 :     note = "also published in print by Austrian Computer Society
316 :     (OCG) under ISBN 978-3-85403-237-3",
317 :     }
318 :    
319 :     @InProceedings{kirner_et_al:DSP:2007:1197,
320 :     author = "Raimund Kirner and Jens Knoop and Adrian Prantl and
321 :     Markus Schordan and Ingomar Wenzel",
322 :     title = "{WCET} Analysis: The Annotation Language Challenge",
323 :     booktitle = "7th Intl. Workshop on Worst-Case Execution Time (WCET)
324 :     Analysis",
325 :     year = "2007",
326 :     editor = "Christine Rochange",
327 :     publisher = "Internationales Begegnungs- und Forschungszentrum
328 :     f{"u}r Informatik (IBFI), Schloss Dagstuhl, Germany",
329 :     address = "Dagstuhl, Germany",
330 :     URL = "http://drops.dagstuhl.de/opus/volltexte/2007/1197",
331 :     annote = "Keywords: Worst-case execution time analysis, WCET,
332 :     path description, annotation language challenge,
333 :     expressiveness, convenience",
334 :     }
335 :    
336 :    
337 :     @InProceedings{knoop:DSP:2008:1575,
338 :     author = {Jens Knoop},
339 :     title = {Data-Flow Analysis for Multi-Core Computing Systems: A Reminder to Reverse Data-Flow Analysis},
340 :     booktitle = {Scalable Program Analysis},
341 :     year = {2008},
342 :     editor = {Florian Martin and Hanne Riis Nielson and Claudio Riva and Markus Schordan},
343 :     number = {08161},
344 :     series = {Dagstuhl Seminar Proceedings},
345 :     ISSN = {1862-4405},
346 :     publisher = {Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, Germany},
347 :     address = {Dagstuhl, Germany},
348 :     URL = {http://drops.dagstuhl.de/opus/volltexte/2008/1575},
349 :     annote = {Keywords: Multi-core computing systems, scalable program analysis, reverse data-flow analysis, demand-driven data-flow analysis}
350 :     }
351 :    
352 :     @InProceedings{conf/cc/XueK06,
353 :     title = "A Fresh Look at {PRE} as a Maximum Flow Problem",
354 :     author = "Jingling Xue and Jens Knoop",
355 :     bibdate = "2006-04-05",
356 :     bibsource = "DBLP,
357 :     http://dblp.uni-trier.de/db/conf/cc/cc2006.html#XueK06",
358 :     booktitle = "CC",
359 :     booktitle = "Compiler Construction, 15th International Conference,
360 :     {CC} 2006, Held as Part of the Joint European
361 :     Conferences on Theory and Practice of Software, {ETAPS}
362 :     2006, Vienna, Austria, March 30-31, 2006, Proceedings",
363 :     publisher = "Springer",
364 :     year = "2006",
365 :     volume = "3923",
366 :     editor = "Alan Mycroft and Andreas Zeller",
367 :     ISBN = "3-540-33050-X",
368 :     pages = "139--154",
369 :     series = "Lecture Notes in Computer Science",
370 :     URL = "http://dx.doi.org/10.1007/11688839_13",
371 :     }
372 :    
373 :     @InProceedings{scholz04,
374 :     author = "Bernhard Scholz and Nigel Horspool and Jens Knoop",
375 :     title = "Optimizing for space and time usage with speculative
376 :     partial redundancy elimination",
377 :     booktitle = "LCTES '04: Proceedings of the 2004 ACM SIGPLAN/SIGBED
378 :     conference on Languages, Compilers, and Tools for Embedded Systems",
379 :     year = "2004",
380 :     ISBN = "1-58113-806-7",
381 :     pages = "221--230",
382 :     location = "Washington, DC, USA",
383 :     publisher = "ACM Press",
384 :     }
385 :    
386 :     @InProceedings{HiKr03,
387 :     TITLE = "{VLIW} Operation Refinement for Reducing Energy Consumption",
388 :     AUTHOR = "Ulrich Hirnschrott and Andreas Krall",
389 :     BOOKTITLE = "International Symposium on System-on Chip",
390 :     PUBLISHER = "IEEE",
391 :     ADDRESS = "Tampere, Finland",
392 :     YEAR = "2003",
393 :     PAGES = "131--134",
394 :     }
395 :    
396 :     @Article{Krall+04micro,
397 :     author = {Andreas Krall and Ulrich Hirnschrott and Christian Panis and Ivan Pryanishnikov},
398 :     title = {x{DSP}core: {A} {C}ompiler-{B}ased {C}onfigureable {D}igital {S}ignal {P}rocessor},
399 :     journal = {IEEE Micro},
400 :     year = {2004},
401 :     OPTkey = {},
402 :     volume = {24},
403 :     number = {4},
404 :     pages = {67-78},
405 :     month = {July/August},
406 :     OPTnote = {},
407 :     OPTannote = {},
408 :     }
409 :    
410 :     @INPROCEEDINGS{FarKrStBrand06,
411 :     TITLE = {Effective Compiler Generation by Architecture Description},
412 :     AUTHOR = {Stefan Farfeleder and Andreas Krall and Edwin Steiner and Florian Brandner},
413 :     BOOKTITLE = {ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems},
414 :     EDITOR = {Koen De Bosschere},
415 :     PUBLISHER = {ACM},
416 :     PAGES = {145--152},
417 :     ADDRESS = {Ottawa},
418 :     MONTH = {June},
419 :     YEAR = {2006},
420 :     URL = {http://doi.acm.org/10.1145/1134650.1134671},
421 :     }
422 :    
423 :     @ARTICLE{PrKrHo06,
424 :     AUTHOR = {Ivan Pryanishnikov and Andreas Krall and Nigel Horspool},
425 :     TITLE = {Compiler Optimizations for Processors with {SIMD} Instructions},
426 :     JOURNAL = {Software---Practice and Experience},
427 :     PUBLISHER = {Wiley},
428 :     VOLUME = {37},
429 :     NUMBER = {1},
430 :     PAGES = {93--113},
431 :     YEAR = {2007},
432 :     URL = {http://www3.interscience.wiley.com/cgi-bin/fulltext/112783581/PDFSTART},
433 :     }
434 :    
435 :     @ARTICLE{FaKrHo07,
436 :     AUTHOR = {Stefan Farfeleder and Andreas Krall and Nigel Horspool},
437 :     TITLE = {Ultra Fast Cycle-Accurate Compiled Emulation of Inorder Pipelined Architectures},
438 :     JOURNAL = {Journal of Systems Architecture},
439 :     PUBLISHER = {Elsevier},
440 :     VOLUME = {53},
441 :     NUMBER = {8},
442 :     PAGES = {501--510},
443 :     YEAR = {2007},
444 :     }
445 :    
446 :     @INPROCEEDINGS{MeKr07,
447 :     TITLE = {Instruction Set Encoding Optimization for Code Size Reduction},
448 :     AUTHOR = {Michael Med and Andreas Krall},
449 :     BOOKTITLE = {International Conference on Embedded Computer Systems: Architectures, Modeling, and Simulation},
450 :     ADDRESS = {Samos, Greece},
451 :     PAGES = {9--17},
452 :     MONTH = {July},
453 :     YEAR = {2007}
454 :     }
455 :    
456 :     @INPROCEEDINGS{BrEbKr07,
457 :     TITLE = {Compiler Generation from Structural Architecture Descriptions},
458 :     AUTHOR = {Florian Brandner and Dietmar Ebner and Andreas Krall},
459 :     BOOKTITLE = {International Conference on Compilers, Architecture, and Synthesis for Embedded Systems},
460 :     ADDRESS = {Salzburg, Austria},
461 :     PAGES = {13--22},
462 :     MONTH = {September},
463 :     YEAR = {2007}
464 :     }
465 :    
466 :     @INPROCEEDINGS{EbBrSchKrWiKa08,
467 :     TITLE = {Generalized Instruction Selection using {SSA}-Graphs},
468 :     AUTHOR = {Dietmar Ebner and Florian Brandner and Bernhard Scholz and Andreas Krall and Peter Wiedermann and Albrecht Kadlec},
469 :     BOOKTITLE = {ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems},
470 :     EDITOR = {John Regehr},
471 :     PUBLISHER = {ACM},
472 :     PAGES = {31--40},
473 :     ADDRESS = {Tucson},
474 :     MONTH = {June},
475 :     YEAR = {2008},
476 :     }
477 :    
478 :     @INPROCEEDINGS{BrFeKrRi09,
479 :     TITLE = {Fast and Accurate Simulation using the LLVM Compiler Framework},
480 :     AUTHOR = {Florian Brandner and Andreas Fellnhofer and Andreas Krall and David Riegler},
481 :     BOOKTITLE = {Rapid Simulation and Performance Evaluation: Methods and Tools (RAPIDO'09)},
482 :     EDITOR = {Smail Niar, Rainer Leupers, Olivier Temam},
483 :     PUBLISHER = {HiPEAC},
484 :     PAGES = {1--6},
485 :     ADDRESS = {Paphos, Cyprus},
486 :     MONTH = {January},
487 :     YEAR = {2009},
488 :     }
489 :     \end{comment}
490 :    
491 :     \bibliography{res} % Input von res.bib, kommt dann spaeter dazu ...
492 :    
493 :     \end{document}

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help