Höhere Leistung mit Assembler-Unterprogrammen

Ein-/Ausgabezeiten verkürzen

01.08.1975

Von Hans Hermann Wolf Exklusiv für CW

In den letzten Jahren ist der Weg zu höheren Programmiersprachen immer stärker beschritten worden. Schnelle Verfügbarkeit, größere Fehlerfreiheit, Wartungsfreundlichkeit und Portabilität von Programmen fordern den Einsatz von höheren Programmiersprachen wie zum Beispiel Cobol, Fortran, PL 1 und Pascal.

Stirbt der Assembler?

So stellt sich die Frage, ob unter diesen Voraussetzungen in der Anwenderprogrammierung dem Assembler noch ein Platz eingeräumt werden kann. Dies wäre nur dann annehmbar, wenn die Vorteile die Nachteile deutlich überwiegen.

Vorteile der Assembler sind nicht nur höhere Geschwindigkeit und Platzersparnis, sondern auch Lösungsmöglichkeiten für oder bei Aufgaben, die höhere Programmiersprachen nicht unter stützen. Die Nachteile lassen sich jedoch durch konsequente Verwendung von nur kleinen Assembler-Unterprogrammen mit fest definierten Schnittstellen in Grenzen halten Dadurch können die Unterprogramme schnell und problemlos in den jeweiligen Assembler umgeschrieben oder auch durch ein Unterprogramm in höherer Programmiersprache mit gleicher Funktion ausgetauscht werden. Anlagenunabhängigkeit ist dadurch praktisch gewährleistet.

Auf die Problematik wurde unter anderem in der Computerwoche vom 13. Juni 75 in einem Artikel von P. Molzberger und D. Peschanel: "Bessere Programmier-Konzepte" eingegangen.

Mehr Effizienz durch Unterprogramme

Auch das Institut für Medizinische Datenverarbeitung, München, konnte durch den Einsatz von knapp zehn Assembler-Unterprogrammen

eine deutlich höhere Effizienz erreichen.

Am Beispiel unserer Assembler-Behandlungs-Routinen für Siemens' virtuelle Anlagen 4004/46 und 4004/151 im Betriebssystem BS 2000 läßt sich dies aufzeigen. Bei Verzicht auf formatiertes Lesen und Schreiben von Sätzen ergaben sich folgende Vorteile:

- Eine Steigerung der Übertragungs-Geschwindigkeit um den Faktor 15 bis 19 bei Fortran. Bei Cobol und ANS-Cobol (bekanntlich spezialisiert auf E/A-intensive Arbeiten) kommt dieser Vorteil nicht zum Tragen. (Testbedingung einheitlich, 19210 Blöcke Ó 496 Bytes und Satz gleich Block)

- Ein Kontrollcode ermöglicht korrekte Fehlerbehandlung durch Unterscheiden von Parity-Fehlern, Readafter-Write-Fehlern, Tape-Marken, Band-Ende usw.

- Angaben von Blockgröße, Satzgröße, Satzform und Zugriffsart entfallen im File-Kommando.

- Schnelles Positionieren auf Blöcke und Tape-Marken.

- Verarbeiten systemfremder Bänder.

Die Bandroutinen sind seit mehr als einem Jahr an mehreren Stellen im täglichen Einsatz erprobt und aus unserem Angebot von Utilities nicht mehr wegzudenken.

Ähnliche Erfahrungen konnten wir in anderen Anwendungsbereichen (z. B. Matrizen-Operationen) machen.

Es folgt hieraus, daß beim derzeitigen Stand der geläufigen höheren Programmiersprachen es noch nicht sinnvoll ist, auf die Verwendung von Assembler gänzlich zu verzichten. Dennoch bleibt der Wunsch, daß durch die künftige Entwicklung von Programm ersprachen der Einsatz von Assembler entfällt.

Hans Hermann Wolf ist Programmierer am Institut für Medizinische Datenverarbeitung der Gesellschaft für Strahlen- und Umweltforschung (Leitung: Prof. Dr. H.-J. Lange)