Diskussion:Bytecode

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Diese Diskussionsseite dient dazu, Verbesserungen am Artikel „Bytecode“ zu besprechen. Persönliche Betrachtungen zum Thema gehören nicht hierher. Für allgemeine Wissensfragen gibt es die Auskunft.

Füge neue Diskussionsthemen unten an:

Klicke auf Abschnitt hinzufügen, um ein neues Diskussionsthema zu beginnen.

Bytecode meint immer VM-Code?[Quelltext bearbeiten]

Hey leute, seid Ihr euch sicher, dass mit dem Begriff Bytecode immer Code für eine VM gemeint ist? Wie heißt dann die Mischform in ausführbaren Dateien, die Maschinencode und Code, der Betriebssystemfunktionen aufruft, enthält? --Supaari bla!bla! 20:30, 10. Sep 2004 (CEST)

Die Angaben sind jetzt deutlich Präziser. Ein Gute Schritt, für eine Einleitung wird das ganze aber jetzt schon etwas lang.--tstrauss 22:33, 18. Okt 2004 (CEST)

Geschichtliches und Hintergründe[Quelltext bearbeiten]

Wie es zu dem Begriff Beyte-Code kam, und wo er herkommt, wäre zu belegen. Die Vermutung, daß der Token-Interpreter einer VM mit einem Beyte vollständig Adressierbar ist, dürfte von der jeweiligen VM abhängen. Aber die üblichen VMs sind keine Tokeninterpreter und ihre Befehle, nicht nur beyte-groß. So daß der Begriff, Beyte-Code bestenfalls historisch begründet, aber nicht zutreffend ist.
Nach den abgegebenen Erklärungen im Artikel BeyteCode, wäre es besser von VM-Code, oder auch virtuelen Code zu sprechen.
Noch ein anderer Aspekt: Einen Interpreter kann ich, abstrakt betrachtet, zu einen "Bedingten indirekten Sprung" vereinfachen. Wobei moderne Interpretersprachen erst durch mehrfach indirekte Verknüpfungen implementierbar sind. Es sind also vergleichsweise zum Mehrpass-Compiler, Mehrpass-Interpreter.
Wenn man nun einen Teil der indirekten Verknüpfungen, nicht erst zur Laufzeit auflöst, sondern schon vorher, findet definitionsgemäß eine Compilation statt. Der so entstandene Code, ist kein Quellcode mehr, aber auch noch kein Maschinencode. Er muß noch von einer, nun einfacheren und damit auch schnelleren virtuellen Maschine zur Laufzeit interpretiert werden. Ich denke, das ist es, was Ihr BeyteCode nennt. Und ich lieber VM-Code, oder auch virtuellen Maschienencode heiße.
py_thom@yahoo.de
(Der vorstehende Beitrag stammt von 213.39.215.16310:48, 4. Jan. 2005 (CET) – und wurde nachträglich vollständig signiert.)[Beantworten]

Bytecode in Assembler[Quelltext bearbeiten]

Ist es auch möglich Bytecode in eine beliebige Assemblersprache zu übersetzen?
(Der vorstehende Beitrag stammt von 84.165.167.8019:30, 27. Nov. 2005 (CET) – und wurde nachträglich vollständig signiert.)[Beantworten]

Da eine VM Intern den Bytecode interpretiert und Ihn auf einer Maschine ausführt ist dieser Schritt unumgänglich. Alles was auf einer Maschine läuft, muss in Maschinensprache (vereinfacht Assembler) übersetzt werden können --Daniel Bovensiepen 21:45, 6. Jan 2006 (CET)
Assembler ist maschinennaher Code, aber kein nativer Code. Assemblercode muss, wie jeder andere Code auch, erst in Maschinencode übersetzt werden, also: Nein. --77.21.93.83 23:33, 21. Jan. 2011 (CET)[Beantworten]

Mit Assembler ist alles machbar, was der Rechner kann. Eine (auf dem Computer laufende) VM kann nichts berechnen, was nicht auch in Assembler programmierbar wäre. Das bedeutet aber nicht zwingend, dass Bytecode immer in ein "direkt ausführbares Assembler-Programm" übersetzt werden kann: Gegenbeispiel:

  • Ein selbstmodifizierendes Bytecode-Programm kann nicht für einer Harvard-Architektur kompiliert werden.
  • "beliebige Assemblersprache" - Das Zielsystem muss ggf. die technischen Voraussetzungen erfüllen: Ein (Bytecode-)Programm mit GUI kann nicht auf einer Maschine ausgeführt werden, die headless läuft.

--arilou (Diskussion) 10:07, 19. Jul. 2019 (CEST)[Beantworten]

Spekulation zur Komplexität der Bytecode-Interpretierung[Quelltext bearbeiten]

Sollte man vielleicht in den Artikel schreiben, dass der Bytecode so entworfen wird, dass er auf moeglichst vielen Architekturen schnell interpretierbar ist? Ich bin mir jetzt nicht sicher, ob das wirklich stimmt, vielleicht kann das jemand ergaenzen, der sich mit VMs auskennt?89.56.240.133 20:30, 18. Mai 2006 (CEST)[Beantworten]

nein, das stimmt eher nicht. wenn ein zwischencode auf heutigen systemen schnell (direkt, ohne zwischenschritte) interpretiert werden können sollte, würde man keinen bytecode nehmen, bei dem daten an derart ungeraden adressen liegen können. das laden solcher daten kostet leistung. und man würde wohl auch nicht (wie beim java-bytecode) auf stackbasierte verarbeitung setzen, heutige maschinen haben ordentlich schnelle register. -- 21:10, 18. Mai 2006 (CEST)[Beantworten]

Im Artikel wird nur C# genannt, aber das Prinzip bezieht sich eigentlich auf alle .NET-Sprachen. Denn die Ausführung ist kein Teil der Programmiersprache (z.B. C#), sondern der Laufzeitumgebung (CLR). Könnte man das entsprechend "weiter" fassen?
(Der vorstehende Beitrag stammt von 89.198.134.25323:35, 22. Nov. 2008 (CET) – und wurde nachträglich signiert.)[Beantworten]

Die grundlose Fokussierung auf C# (POV) störte mich auch, wurde "abgeschwächt", d.h. auf .NET verallgemeinert --Benutzer:Filzstift  12:09, 1. Mär. 2010 (CET)[Beantworten]

Falscher Verweis auf Virtuelle Maschine[Quelltext bearbeiten]

Im Satz "In der Informatik ist Bytecode eine Sammlung von Befehlen für eine virtuelle Maschine." wird auf die Seite "Virtuelle Maschine" verwiesen. Sollte dieser Link nicht auf den Artikel von "Laufzeitumgebung" verwiesen werden? (nicht signierter Beitrag von 193.170.2.36 (Diskussion | Beiträge) 11:47, 3. Nov. 2009 (CET)) [Beantworten]

Text im ersten Paragraphen nicht ganz klar[Quelltext bearbeiten]

in anderer Aspekt: Einen Interpreter kann man, abstrakt betrachtet, zu einem „bedingten indirekten Sprung“ vereinfachen, wobei moderne Interpretersprachen erst durch mehrfach indirekte Verknüpfungen implementierbar sind. Es sind also, analog zum Mehrpass-Compiler, Mehrpass-Interpreter.

Wenn man nun einen Teil der indirekten Verknüpfungen nicht erst zur Laufzeit auflöst, sondern schon vorher, findet definitionsgemäß eine Kompilation statt. Der so entstandene Code ist kein Quellcode mehr, aber auch noch kein Maschinencode. Er muss noch von einer, nun einfacheren und damit auch schnelleren virtuellen Maschine zur Laufzeit interpretiert werden.


Tut mir leid, mir ist nicht ganz klar, was damit gemeint ist. Wenn jemand weiß, was dieser Abschnitt mir sagen soll, könnte dieser jemand dann seine Zeit opfern und den Artikel an dieser Stelle deutlicher formulieren? Danke.

--84.136.207.38 19:01, 28. Jun. 2010 (CEST)[Beantworten]

Hatte diesen Satz gesichtet und etwas umformuliert: "Alternativ bietet sich das quelloffene dnSpy an." Ich hoffe, das war richtig.F.Blaubiget (Auch ich finde den Namen doof) 20:50, 23. Jul. 2019 (CEST)[Beantworten]