Τελικός κώδικας
Ο τελικός κώδικας που παράγεται από έναν μεταγλωττιστή μπορεί να είναι:
- συμβολική γλώσσα ενός συγκεκριμένου επεξεργαστή
- γλώσσα μηχανής ενός συγκεκριμένου επεξεργαστή
- γλώσσα μιας ιδεατής μηχανής (virtual machine)
- μια άλλη γλώσσα χαμηλότερου επιπέδου (π.χ. C για ένα μεταγλωττιστή C++)
- μια δομή δεδομένων η οποία θα εκτελεστεί από ένα διερμηνευτή
Παραδείγματα
Τα παρακάτω παραδείγματα έχουν ως είσοδο το πρόγραμμα που τυπώνει "hello, world".
Συμβολική γλώσσα Linux Intel 386
.file "hello.c"
.version "01.01"
gcc2_compiled.:
.section .rodata
.LC0:
.string "hello, world\n"
.text
.align 4
.globl main
.type main,@function
main:
pushl %ebp
movl %esp,%ebp
pushl $.LC0
call printf
addl $4,%esp
.L1:
leave
ret
.Lfe1:
.size main,.Lfe1-main
.ident "GCC: (GNU) egcs-2.91.66 19990314/Linux (egcs-1.1.2 release)"
Γλώσσα μηχανής από δυαδικό αρχείο Linux Intel 386 σε μορφή δεκαεξαδική και ASCII
hello.o: file format elf32-i386
Contents of section .text:
0000 5589e568 00000000 e8fcffff ff83c404 U..h............
0010 c9c3 ..
Contents of section .data:
Contents of section .note:
0000 08000000 00000000 01000000 30312e30 ............01.0
0010 31000000 1...
Contents of section .rodata:
0000 68656c6c 6f2c2077 6f726c64 0a00 hello, world..
Contents of section .comment:
0000 00474343 3a202847 4e552920 65676373 .GCC: (GNU) egcs
0010 2d322e39 312e3636 20313939 39303331 -2.91.66 1999031
0020 342f4c69 6e757820 28656763 732d312e 4/Linux (egcs-1.
0030 312e3220 72656c65 61736529 00 1.2 release).
Συμβολική γλώσσα της ιδεατής μηχανής Java Virtual Machine
Compiled from hello.java
class hello extends java.lang.Object {
hello();
public static void main(java.lang.String[]);
}
Method hello()
0 aload_0
1 invokespecial #9 <Method java.lang.Object()>
4 return
Method void main(java.lang.String[])
0 getstatic #12 <Field java.io.PrintStream out>
3 ldc #2 <String "Hello ">
5 invokevirtual #13 <Method void print(java.lang.String)>
8 getstatic #12 <Field java.io.PrintStream out>
11 new #7 <Class java.lang.StringBuffer>
14 dup
15 aload_0
16 iconst_0
17 aaload
18 invokestatic #16 <Method java.lang.String valueOf(java.lang.Object)>
21 invokespecial #10 <Method java.lang.StringBuffer(java.lang.String)>
24 ldc #1 <String " ">
26 invokevirtual #11 <Method java.lang.StringBuffer append(java.lang.String)>
29 aload_0
30 iconst_1
31 aaload
32 invokevirtual #11 <Method java.lang.StringBuffer append(java.lang.String)>
35 invokevirtual #15 <Method java.lang.String toString()>
38 invokevirtual #14 <Method void println(java.lang.String)>
41 return