Übersetzer
Eine Programmiersprache, die für Menschen und deren typische Problemen gestaltet wurde, nennt man eine höhere Programmiersprache oder eine problemorientierte Programmiersprache. Damit soll sie von der „niedrigen“ Maschinensprache unterschieden werden, die vom Prozessor verstanden wird. Zur Ausführung eines Programms muß ein Programm in einer höheren Programmiersprache aber erst in Maschinensprache übersetzt werden. Die Übersetzung kann durch ein Übersetzungsprogramm (Compiler ) erfolgen.
Ein Übersetzer liest eine Übersetzungseinheit (eine Quelldatei ) und schreibt dann eine Objektdatei, die Maschinencode enthält, der dem Quellcode entspricht.
maschinelle Uebersetzung
_____
.-' '-.
.' '.
/ \
; ;
| Uebersetzungs- |
; Einheit ;
\ /
'. .'
'-._____.-'
|
V
.-------------------.
| |
| Uebersetzer |
| |
'-------------------'
|
__V__
.-' '-.
.' '.
/ \
; ;
| Objektcode |
; ;
\ /
'. .'
'-._____.-'
Die Übersetzungszeit ist die Zeit, zu der ein Programm übersetzt wird. Ein Übersetzungszeitfehler ist ein Fehler in einem Programm, der schon während der Übersetzung des Programms vom Übersetzer erkannt werden kann. Dies sind meistens die Syntaxfehler. Aber auch zu große Ausdrücke können beanstandet werden, wenn deren Wert schon zur Übersetzungszeit erkannt werden kann.
Einer der ersten Übersetzer war der formula translator fortran. Er wurde 1954-1957 von einer ibm-Gruppe unter der Führung von John W. Backus erstellt. Anweisungen konnten unter Zuhilfenahme der gewohnten mathematischen Notation geschrieben werden.
ein FORTRAN-Programm
INTEGER Y, X
X = 7
Y = X *( X + 3 )
PRINT Y
STOP
Die Übersetzung der „Formeln“ in Maschinensprache kann man sich wie in der folgende Auflistung vorstellen, in der aber die Codes der Maschinensprache bereits durch besser lesbare Merkwörter ersetzt wurden.
Assembler-Code (Intel Pentium)
MOVL $7,-4(%EBP)
MOVL -4(%EBP),%EDI
MOVL %EDI,%ESI
ADDL $3,%ESI
IMULL %ESI,%EDI
MOVL %EDI,-8(%EBP)
PUSHL -8(%EBP)
CALL _PRINT
RET