In welchem Assembler-Code sind EXE-Dateien geschrieben/kompiliert?

3 Antworten

Dass solche Programm in 99% aller Fälle nicht in Assembler geschrieben wurden, ist nur klar.

16-Bit-Programme für DOS und Windows (<= 3) enthalten die üblichen Instruktionen für 8086 bis 80486-Prozessoren, die in non-real-Modus laufen.

32-Bit-Programme (ab Windows-95 und Windows 3.32 mit 32bit-Erweiterung) verwenden die Instruktionen des RealMode von Prozessoren ab 80386 außerdem werden hier Programme in P-Code ausgeführt, die Instruktionen für einen virtuellen Prozessor verwenden.

64-Bit-Programme (ab Windows-XP 64bit) verwenden AFAIK nur noch P-Code und (bei C#) eine Art Mischung aus Interpreter und Zwischencode).

Genau umgekehrt:

DOS und Windows 1.x und teilweise 2.x hat "real Mode" verwendet.

Windows 3.x und teilweise 2.x hat "16-bit protected Mode" verwendet. Die Instruktionen sind im "real Mode" und im "16-bit protected Mode" dieselben, jedoch haben die Segmentregister eine andere Bedeutung.

Ab Windows NT 3.x hat Windows "32-bit protected Mode" verwendet.

Bei 64-bit Windows wird "long Mode" verwendet.

Zwar verwenden inzwischen sehr viele Programme CIL Code ("P-Code"), jedoch gibt es immer noch viele Programme, die nativen 32- oder 64-bit-Code verwenden.

1

Die werden überhauptnicht in assembler geschrieben sondern von einem Compiler aus einer anderen Sprache übersetzt. Viele Windows Programme werden aber nichtmal das. Sie liegen in einer Zwischensprache vor die von .net Framework gelesen werden kann.

exe sind ausführbare dateien , sie werden compiliert und sind dann in maschinensprache vorliegend , welche sprache zum  compilieren wird ist egal . das endprodukt ist maschinensprache die windows ausführen kann . und ja 64er code ist anders , da es da um 64 bits geht .

Danke für die schnelle Antwort! Meine Frage ist eben: Welches ist denn die "Maschinensprache, die Windows ausführen kann"? Logischerweise können die Hochsprachen unterschiedlich sein, der Compiler übersetzt das alles in eine bestimmte Art von Assembler. Sind alle Prozessoren, auf denen Windows läuft, gleich oder zumindest genormt (mir schwirren da die Begriffe RISC und CISC im Kopf rum...?), die Opcodes in der EXE-File genau danach ausgerichtet sind? Assembler ist ja nicht gleich Assembler, es gibt ja für jede Art von Prozessor eine eigene Sprache.

1

Was möchtest Du wissen?