Der K1810WM87 (russisch К1810ВМ87) ist ein sowjetischer Nachbau des numerischen Koprozessors Intel 8087. Er ist Teil des K1810-Systems und wurde beispielsweise im ESER-PC EC 1834 verwendet.
Datentypen
Der K1810WM87 unterstützt insgesamt 7 verschiedene Datentypen:
- 16-Bit-Short Integer
- 32-Bit-Word-Integer
- 64-Bit-Long-Integer
- 80-Bit-BCD
- 32-Bit-Short Real
- 64-Bit-Long-Real
- 80-Bit-Temporary-Real
In den Registern wird immer das Temporary-Real-Format verwendet. Alle anderen Formate werden nur bei Load- und Store-Befehlen verwendet.
Register
Der K1810WM87 besitzt folgende Register:
- 8 Gleitkommaregister, als Stapel organisiert, jedes 80 Bit breit
- 1 16-Bit-Steuerwort
- 1 16-Bit-Statuswort
- 1 16-Bit-TAG-Wort
- 1 Instruktionszeiger
- 1 Operandenzeiger
Stapelregister werden in der Form ST(i), i = 0…7, angegeben. Der Index i zeigt auf das i-te Register nach der Stapelspitze. Die Register ST und ST(0) sind die gleichen.
Programmierung
Als Operanden können Speicherdaten, Stapelregister, Status- und Steuerregister verwendet. Für die Adressierung des Speichers ist der Host-Prozessor (K1810WM86) zuständig. Somit können alle Adressierungsarten der CPU verwendet werden.
Neben normierten Zahlen (Normals) gibt es folgende, spezielle, Werte:
- Null (0)
- Denormierte Zahlen (Denormals)
- Unnormale Zahlen (Unnormals)
- Unendlich (Infinity)
- Indefinit-Kode
- NaN (Not-A-Number)
Für die Synchronisierung zwischen Host- und Koprozessor kann der WAIT-Befehl verwendet werden.
Initialisierung
Der K1810WM87 kann entweder durch ein RESET-Signal oder durch ein externes Programm initialisiert werden. Nach der Initialisierung besitzt der K1810WM87 folgenden Zustände:
- Steuerwort: Im Steuerwort wird das projektive Modell, Runden zum nächsten Wert, 64 signifikante Stellen, Interrupts verboten und Exceptions maskiert ausgewählt.
- Statuswort: Im Steuerwort wird das BUSY-Flag auf 0, der Ergebniskode auf undefiniert, der Stapelzeiger auf 0 (Stapel leer), das Interruptflag auf 0 (kein Interrupt) und das Exception-Flag auf 0 (keine Exceptions) gesetzt.
- TAG-Wort: Jedes der Tags wird auf den Wert 3 (Register frei) gestellt.
Befehlssatz
Der Befehlssatz lässt sich folgendermaßen unterteilen:
- Datentransferbefehle
- Arithmetikbefehle
- Vergleichsbefehle
- Transzendente Befehle
- Befehle zum Laden von Konstanten
- Befehle zur Prozessorsteuerung
Siehe auch
Literatur
Jochen Bonitz: Der 16-Bit-Mikroprozessor des ESER-PC. VEB Verlag Technik Berlin, 1989, ISBN 3-341-00704-0.