Compiler Assembler unterschied Heute?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
früher bzw heute nur noch selten:
die HLL durch den compiler in Assemblersprache umgewandelt wird (Mnemonics) und im jeweiligen Assembler(CPU-Architektur-abhängig) dann in Maschinensprache bzw. Binärcode übersetzt wird?

u.a. stimmt das, ja. Allerdings nicht aus dem Speichergrund, den du angegeben hast. Wichtig zu wissen ist, dass Assembler und Maschinencode äquivalent sind. Assembler-Code, welcher durch einen Assembler umgewandelt wird, ist Maschinencode in lesbar.

Meines Wissens nach hat man das früher gemacht, um den entstandenen Code besser debuggen zu können bzw. zu sehen, wie dieser genau arbeitet. Unter Assembler konnte man das einfach besser nachvollziehen, als einen hexdump von irgendwelchem Maschinen-Code anzufertigen, den man dann interpretieren musste.

Ob allerdings eine Sprache direkt in MS oder mit dem Zwischenschritt Assembler übersetzt wird, hängt vom Compiler ab und nicht von der Sprache.

Heute wir der Zwischenschritt meist aus Zweckmäßigkeit ausgelassen. In den letzten 40 Jahren hat sich viel im Bereich Compilerbau getan. Mathe, Technik , Tools. Das alles hat man so weiter entwickelt, dass man heute viele Spezialisten in dem Fachbereich hat, welche Compiler bauen, die sehr viel ausgereifter sind als das, was man noch zu Beginn der 70er hatte.

Es wird heute wohl einfach nicht mehr gemacht, weil man es nicht mehr in der breiten Masse braucht. Optional kann man sich den Code aber auch heute noch erstellen lassen.


Erzesel  05.10.2019, 17:07

Ich kennen den Ausgegebenen Assemblercode noch von Freepascal oder Cygnus C. Nachdem der automatische Profiler seine Optimierungen erledigt hatte, konnte der Programmierer nochmal selbst Feintunen bevor der Assembler in Maschinencode übersetzte.

Im Allgemeinen warfen wir unnütze Stackzugriffe bei Prozeduraufrufen raus. Allerdings musste man höllisch aufpassen das man den Stack nicht zerschoss.... damals hatten wir jedoch kein Multithreading. Heute würde ich sollche Sachen besser dem Compiler überlassen...

1
Lukele 
Beitragsersteller
 07.10.2019, 00:16

1a Antwort. Genau das, was ich wissen wollte. Danke!

0

Das hängt sehr vom Compiler und dessen Entwurf ab. Aber z.B. weder gcc noch clang setzen direkt in Maschinencode um, ebensowenig rust z.B. .