Makro vs Unterprogramm Assembler?

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Weil ein "Unterprogramm" nur ein einziges Mal im Code vorkommt, dafür aber bei jedem Aufruf angesprungen und davon zurück gekehrt werden muss.

Der Code eines Makros steht an jeder Stelle direkt, an der das Makro stand und erhöht dadurch den benötigten Speicherplatz. Da aber nirgendwo hin und her gesprungen werden muss, ist die Ausführung schneller.

An deiner Frage erkennt man übrigens sehr schön, dass Gott gerne Software-Entwickler quält: Immer muss man sich zwischen "schnell" oder "klein" entscheiden ... beides geht leider nicht. Leider, leider, ... hach jaaa ...


LonelyBronco 
Beitragsersteller
 30.01.2017, 10:46

Das macht Sinn :) Danke..

könntest du dir vielleicht noch bei meinen Fragen die "Dual Channel Frage?" ansehen? Die stammt aus der selben Altklausur..Nur falls es dir nicht zu viel ausmacht, würde mir sehr helfen

0

Soweit meine Erinnerung reicht war es ja so, das Makros im Prinzip Codeblöcke waren, welche vom Assembler an der entsprechenden Stelle immer eingefügt wurden. Also quasi sowas wie ein "statischer Code".

Dadurch wächst natürlich das Programm und der vom Programm verwendete Speicher (der Code muss ja im Speicher liegen), aber es ist schnell, weil der Code einfach "von vorne nach hinten" durchläuft.

Bei Unterprogrammen muss zunächst der Registersatz gesichert werden, die Parameter müssen auf den Stack, dann muss ein Sprung gemacht werden und bei Ende des Unterprogramms das ganze wieder rückwärts.

Vorteil ist halt, dass das Unterprogramm unabhängig vom umgebenden Code ist und nur einmal in Programmcode vorkommt. Der Nachteil, was es eben langsamer macht ist, dass das ganze "Drumrum" eben aufwändiger ist.