Frank Schönmann: Wie ist das noch gleich mit den Computern? *g*

Beitrag lesen

hi!

Haeh?! Das ist jetzt wirklich Quatsch!
Der Maschinencode wird vom Prozessor ausgefuehrt, Punkt. Da
pfuscht kein Betriebssystem oder sonstwas drin rum. Das BS selbst
ist ja schliesslich auch nur Maschinencode, nichts anderes als
ein stinknormales Programm.
hm, tut mir leid, ich hab das anders gelernt... oder ich werf da was
durcheinander *g*

In welcher Hinsicht? Die ausführbare Datei eines Programs enthält reinen Maschinencode, der direkt vom
Prozessor ausgeführt wird. Gib zb. mal "debug programm.exe" ein und dann "u".

=== cut ===
0CB3:0100 50            PUSH    AX
0CB3:0101 4B            DEC     BX
0CB3:0102 0304          ADD     AX,[SI]
0CB3:0104 1400          ADC     AL,00
0CB3:0106 0000          ADD     [BX+SI],AL
0CB3:0108 0800          OR      [BX+SI],AL
0CB3:010A 046A          ADD     AL,6A
0CB3:010C 7B26          JPO     0134
0CB3:010E F718          NEG     WORD PTR [BX+SI]
0CB3:0110 D98C49020000  ESC     09,[SI+0249][SI+0000]
0CB3:0116 1E            PUSH    DS
0CB3:0117 0400          ADD     AL,00
0CB3:0119 000A          ADD     [BP+SI],CL
0CB3:011B 0000          ADD     [BX+SI],AL
0CB3:011D 005265        ADD     [BP+SI+65],DL
=== cut ===
Vornedran steht die Adresse der jeweiligen Stelle im Programm (xxxx:0100 ist normalerweise die erste
Anweisung), danach kommt der Maschinencode in Hex-Form, danach des disassemblierte Sourcecode
(Disassemblierung des Sourcecodes ist jederzeit möglich, da - wie Calocybe schon schrieb - jeder
ASM-Befehl einen festen Maschinencode hat).

Um eine EXE-Datei auszuführen (bzw. eigentlich jedes Programm unter irgendeinem OS) lädt das
Betriebssystem, also der Kernel, das Programm in den Speicher und übergibt dem Prozessor die
Speicheradresse der ersten Maschinencode-Anweisung. Der Prozessor beginnt dann an dieser Stelle
und arbeitet die Maschinencodes nach und nach ab, bis er auf eine Anweisung trifft, die diese Abarbeitung
beendet (hm, ein einfacher Interrupt schätze ich, kann mich aber auch irren).

Das Betriebssystem tut also überhaupt nichts weiteres, um dem Prozessor irgendwie den Maschinencode
zur Verfügung zu stellen oder nochmal zu interpretieren und dann entsprechende Prozessor-Befehle
auszuführen.

bye, Frank!

ps. Das ist alles schon relativ lange her. Schlagt mich nicht, wenn ich jetzt teilweise Müll erzählt habe ;)