interpreter und compiler
-
dann darf ich es so verstehen:
C++ (Quellcode) ->(Compiler)->Machinencode
Java(Quellcode) ->(Compiler)->ByteCode->(VM)->Machinencode
Bei Java existiert noch eine Zwischenschicht, d.h. zwar ByteCode ist systemunabhängig aber der durch VM erzeugt Machinencode muss systemabhängig sein,richtig? d.h. auch VM ist systemabhängig.
-
Sprachen wie Java, die erstmal in eine Art "Pseudo-Code" compilieren, der dann von einer virtuellen Maschine interpretiert wird oder durch einen Jitter zur Laufzeit in nativen Code übersetzt wird, nennt man auch oft "P-Code Language".
-
netrobot schrieb:
Bei Java existiert noch eine Zwischenschicht, d.h. zwar ByteCode ist systemunabhängig aber der durch VM erzeugt Machinencode muss systemabhängig sein,richtig? d.h. auch VM ist systemabhängig.
Yup, so ist es, deshalb gibt's ja auch für jedes OS ne VM zum runterladen. C++ Code ist übrigens nach dem Compilen immer noch "plattformunabhängig" (außer man verwendet OS-abhängige Funktionen, z.B. aus conio.h), erst beim linken wird ne plattformabhängige executable erstellt.
-
C++ Code ist übrigens nach dem Compilen immer noch "plattformunabhängig" (außer man verwendet OS-abhängige Funktionen, z.B. aus conio.h), erst beim linken wird ne plattformabhängige executable erstellt.
C++ Code ist nach dem Compilieren (.obj oder .o unter linux) schon plattformabhängig
-
Du knüpfst das jetzt aber nicht an die andere Dateieindung, oder? Na gut, vllt. hast ja recht und ich hab mich getäuscht.
-
nein, es ist nicht mit Dateien zu tun, bei Deklarationen od Definitionen von Funktionen und variablen sind die Adressen schon festgelegt,d.h. es bekommt auf jeden Fall schon den ersten Kontakt mit dem System. (Bei 16 Bit Prozessor hat ein integer 16 bits lang, bei 32bit integer hat 32 bits lang)Diese Informationen sind in der compiliert Form drin.
-
Im .o-File steckt prozessorspezifischer Maschinencode. Kannst ja mal versuchen, ein .o-File vom PC auf nem Mac zu linken und auszuführen ...
-
d.h. .o datei ist wohl systemabhängig, richtig?
-
Gut gut, ihr habt mich überzeugt, wieder mal ein Irrtum ausgeräumt.
-
man lernt immer was dazu. BTW conio.h ist zuerst compilerabhängig, das bin ich ziemlich sicher. Ob es noch systemabhängig ist, weiss ich nicht genau