Kompiler
Fra Wikipedia, den frie encyklopædi
Sammenskrivningsforslag Denne artikel er foreslået sammenskrevet med Compiler. (Diskutér forslaget). Hvis sammenskrivningen sker, skal en administrator kontaktes. Denne vil sørge for at historikken holdes samlet. Kopiér ikke bare fra én artikel til en anden. |
En kompiler er et transformationsværktøj for programmører der oversætter/transformerer højniveau kode (der kan skrives, læses og forstås af mennesker) til et lavere niveau som f.eks. det sprog en computer forstår (ultimativt binære instruktions sæt). Det behøver ikke nødvendigvis at være fra høj- til lavniveau men kan også være fra eet højniveaus sprog til et andet (fra java til XML). En java kompiler (javac) oversætter fra java programmerings sproget til java byte kode som kan fortolkes/forstås af en java virtuel maskine (JVM).
Herunder følger et eksempel på oversættelse af java programmet Hello.java.
public class Hello{ public static void main(String[] args){ for(int i=0; i<10; i++) System.out.println("Hallo"); } }
Med javac oversættes Hello.java til en såkaldt class-fil, der indeholder det det oversatte program i såkaldt bytecode. Denne kode er instruktioner til en java-maskine (evt. en virtuel java-maskine, JVM).
Delen public class Hello extends java.lang.Object{ public Hello(); bliver eksempelvis til...
0: aload_0 1: invokespecial #1; //Method java/lang/Object."<init>":()V 4: return
... og main-metoden bliver til...
0: iconst_0 1: istore_1 2: iload_1 3: bipush 10 5: if_icmpge 22 8: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream; 11: ldc #3; //String Hallo 13: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V 16: iinc 1, 1 19: goto 2 22: return
...hvilket en JVM kan forstå og fortolke!