Es soll eine Assembler-Subroutine entwickelt werden, die zwei Gleitkommazahlen addiert, ohne den FPU-Befehl des Prozessors zu benutzen.
Zielvorstellungen und Anforderungen
|
Um den angestrebten Zweck zu erfüllen, muß das entwickelte Programm folgende Merkmale aufweisen:
- Die Assembler-Routine soll von C-Programmen aus aufgerufen werden können, damit ein C-Programm Ein-/Ausgabe und Leistungsvergleich durchführen kann.
- Die beiden Summanden sollen normalisiert vorliegen, da dadurch die Berechnungsgeschwindigkeit positiv beeinflußt wird. Dies ist bei der verwendeten Umgebung stets garantiert.
- Damit die zurückgegebene Summe weiterverarbeitet werden kann, muß diese Gleitkommazahl ebenfalls normalisiert sein.
- Da die Routine von einem C-Programm aus aufgerufen wird, kann davon ausgegangen werden, daß die übergebenen Summanden nicht NaN (Not-A-Number) sind; allerdings muß gegebenenfalls ein Fehler zurückgegeben werden, wenn ein Overflow stattfindet.
Die Entwicklungsumgebung ist Borland Turbo C zusammen mit Borland Turbo Assembler. Zum Testen der Assembler-Routine wird ein C-Programm geschrieben, das das von der Routine zurückgegebene Ergebnis mit dem direkt vom Compiler (mittels der FPU) ausgerechneten vergleicht. Zusätzlich wird auch die Geschwindigkeit der Berechnung verglichen.
- Das angestrebte Ziel sollte mit möglichst wenig Arbeitsaufwand erreicht werden. Daher ist es zweckmäßig, die Aufgabe in einen C- und einen Assemblerteil aufzuteilen - würde das gesamte Programm in Assembler geschrieben, müßten zahlreiche Unterprogramme (z.B. zur Ein-/Ausgabe) implementiert werden, die bereits als Bibliotheksroutinen des Compilers zur Verfügung stehen.
- Bei der Implementierung der Additionsroutine muß darauf geachtet werden, daß auch die volle Genauigkeit des extended precision format ausgenutzt wird und Rundungsfehler möglichst klein sind.
- Da es sich bei der Addition um eine Operation handelt, die in Berechnungen sehr häufig ausgeführt wird (z.B. auch bei der Berechnung von Sinus, Cosinus etc.), sollte die Routine so schnell wie möglich sein.
| zurück |
01. 04. 1998 - Richard Atterer, Korbinian Herrmann, Florian Müller |