DE3500377A1 - Verfahren zur bearbeitung maschinencodierter befehlswoerter und datenprozessor durch durchfuehrung des verfahrens - Google Patents
Verfahren zur bearbeitung maschinencodierter befehlswoerter und datenprozessor durch durchfuehrung des verfahrensInfo
- Publication number
- DE3500377A1 DE3500377A1 DE19853500377 DE3500377A DE3500377A1 DE 3500377 A1 DE3500377 A1 DE 3500377A1 DE 19853500377 DE19853500377 DE 19853500377 DE 3500377 A DE3500377 A DE 3500377A DE 3500377 A1 DE3500377 A1 DE 3500377A1
- Authority
- DE
- Germany
- Prior art keywords
- command
- opcode
- register
- word
- reg
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Description
PHN 10 909 y 20.12.1984
"Verfahren zur Bearbeitung maschinencodierter Befehlswörter und Datenprozessor durch. Durchführung des Verfahrens"
Die Erfindung betrifft ein Verfahren zur Bearbeitung maschinencodierter Befehlswörter mit einem Datenprozessor
mit einem Speicher zum Einschreiben der Befehlswörter, die je einen Opcodeteil und zumindest einen
Operanden-Deskriporteil enthalten, wobei diese Opcodewörter
zu einem endlichen Vorrat gehören, der in eine erste und eine zweite Klasse unterteilt ist, welches Verfahren folgende.
Schritte enthält:.
(a) Aufrufen eines von einem Programmzählerstand angezeigten
ersten Befehlswortes unter der Steuerung des Datenprozessors;
(b) Decodierung des Opcodeteils aus einem ersten Befehlswort und Feststellung der Klasse, zu der der Opcodeteil
des ersten Befehlswortes gehört;
(el) Durchführung der vom Befehlswort angegebenen Operationen
für Befehlswörter mit einem zur ersten Klasse gehörenden Opcodeteil;
(c2) Durchführung folgender Schritte für Befehlswörter mit einem zur zweiten Klasse gehörenden Opcodeteil:
(c2-i) Speicherung des momentanen Programmzählerstandes in ein dazu belegtes Ergänzungs-Programmzählerregister;
(c2-2) Erzeugung einer Speicheradresse auf der Basis des Opcodeteils aus dem ersten Befehlswort, wobei an
dieser Speicheradresse ein zweites Befehlswort angeordnet ist, das den Anfangsbefehl einer Folge von
Befehlswörtern ist, die die Bedeutung des ersten Befehlswortes bestimmen;
(c2-3)Einstellung des momentanen Programmzählerstandes auf die Speicheradresse;
(c2-4)Bearbeitung der Befehlsfolge;
(c2-3)Einstellung des momentanen Programmzählerstandes auf die Speicheradresse;
(c2-4)Bearbeitung der Befehlsfolge;
(c2-5!Einstellung des momentanen Programmzählerstandes auf
einen von dem im Ergänzungs-Programmzählerregister vorhandenen Programmzählerstand bestimmten Wert.
PHN 10 909 /f 20.12.1984
Ein derartiges Verfahren ist aus der Veröffentlichung "Instruction set extension", von R.L. Bains,
R.L. Hoffman, G.R. Mitchell und F.G. Soltis bekannt, die in
der I.B.M. Technical Disclosure Bulletin, Vol.18, Nr. 7,
vom Dezember 1975, S. 2250 bis 2252, veröffentlicht wurde.
Beim bekannten Verfahren sind die maschinencodierten Befehlswörter das Ergebnis von Ubersetzungsvorgängen, die auf
einem von einem Programmierer zugeführten Programmtext angewandt sind. Der Programmtext ist in einer bekannten
Computersprache geschrieben, z.B. in PASCAL oder FORTRAN. Der Compiler und der Assembler des Datenprozessors (auch
mit Computeranlage bezeichnet) übersetzen den Programmtext
in ein System maschinenc.odierter Befehlswörter, die dann während der Bearbeitung des Programmtextes in den Speicher
eingeschrieben werden. Ein Befehlswort hat beispielsweise eine Breite von 32 Bits. Es sind davon beispielsweise 8 Bits
für den Opcodeteil und 20 Bits für den Operanden-Deskriptorteil bestimmt. Bei einem 8 Bits breiten Opcodeteil enthält
ein Vorrat von Opcodes höchstens (2 =) 256 verschiedene
Opcodes. Dieser Vorrat ist beim bekannten Verfahren in zwei Klassen unterteilt, d.h. in die gültigen (i. Klasse)
und die ungültigen (2. Klasse) Opcodes. Der Inhalt des Opcodeteils ist für die Art der durchzuführenden Operation(en)
für die Durchführung des Befehls bestimmend. So kann bei-
^5 spielsweise ein Opcode eine Registerladeoperation oder
einen Sprung nach einem Unterprogramm angeben. Die Decodierung dient dazu, den Opcodeteil in Steuerinformation für
die Computeranlage umzusetzen. Die Reihenfolge, in der die
Befehlswörter vom Datenprozessor aus dem Speicher aufgerufen und bearbeitet werden, wird mit dem Programmzählerstand
angegeben.
Beim bekannten Verfahren haben die Opcodeteile
aus dem Vorrat eine feste Bedeutung, die bei der Decodierung erkannt wird. Ein Opcodeteil mit fester Bedeutung wird nach
der Decodierung auf die bekannte Weise durchgeführt. Abhängig von der Kapazität der Computeranlage enthält der
Vorrat von Opcodes viel oder wenig verschiedene Elemente. Der Anlagenprogrammierer muss mit dem gegebenen Opcode-
PHN 10 909 -3- 20.12.1984
vorrat und mit der festen Bedeutung arbeiten, welche die Computeranlage bei der Decodierung daran gibt. Das bekannte
Verfahren gibt eine Lösung für die Bearbeitung von Befehlswörtern
mit einem ungültigen Opcode (2. Klasse). Venn ein ungültiger Opcode decodiert wird, erfolgt die Speicherung
des momentanen Programmzählerstandes in ein Ergänzungs-Programmzählerregister und wird auf Basis des Opcodeteils
aus dem ersten Befehlswort eine Speicheradresse gebildet. Diese Speicheradresse wird u.a. dadurch gebildet, dass in
einem Schieberegister die bedeutsamsten Bits gleich 0 gemacht werden und für die unbedeutsamsten Bits der Speicheradresse
der Opcode benutzt wird. An dieser Speicheradresse ist ein zweites Befehlswort angeordnet, das der Anfangsbefehl einer Folge von Befehlswörtern ist, die die Bedeutung
des ersten Befehlswortes bestimmen. Auf diese Veise wird ein Befehlswort mit einem ungültigen Opcodeteil in einen
durchführbaren Befehl übersetzt.
Ein Nachteil des bekannten Verfahrens ist, dass bei Befehlswörtern mit einem Opcodeteil, der zur zweiten
Klasse gehört (ungültiger Opcode), bei der Übersetzung in einen durchführbaren Befehl und bei seiner Durchführung
der Operanden-Diskriptorteil des betreffenden Befehlswortes
nicht berücksichtigt wird. Hierdurch wird der Operanden-Deskriptorteil eines derartigen Befehlswortes auf unwirtschaftliche
Weise ausgenutzt, und also auch die Computeranlage .
Der Erfindung liegt die Aufgabe zugrunde, ein Verfahren zur Bearbeitung maschinencodierter Befehlswörter
zu verwirklichen, bei dem der Operanden-Deskriptorteil des Befehlswortes mit einem zur zweiten Klasse gehörenden
Opcodeteil für die Codierung von Operanden-Deskriptoren zur Verfügung steht und auf diese Veise den Anlagenprogrammierer
die Freiheit für die Wahl der Bedeutung der Opcodeteile der zweiten Klasse gegeben wird. Weiter liegt der
Erfindung die Aufgabe zugrunde, ein Verfahren zu schaffen, bei dem auch für höhere Programmiersprachen eine grössere
Wirksamkeit erreicht wird.
Diese Aufgabe wird mit einem erfindungsgemässen
PHN 10 909 >r 20.12.1984
Verfahren dadurch gelbst, dass bei der Folge von Befehlswörtern
von zumindest einem dritten Befehlswort der Operanden-Deskriptorteil aus dem ersten Befehlswort in ein erstes
Indexregister geladen wird. Das Laden des Operanden-Deskriptorteils
in ein erstes Indexregister ermöglicht die Verarbeitung des Operanden-Deskriptors und stellt also die
Operanden-Deskriptoren für Codierung zur Verfügung. Veiter wird durch die Verwendung eines Indexregisters die bestehende
Hardware für die Decodierung des Operanden-Deskriptors
benutzt. Der Anlagenprogrammierer hat jetzt die Möglichkeit zur Speicherung zu verarbeitender Information in den
Deskriptorteil, wobei diese Information von der erwähnten Folge von Befehlswörtern verarbeitet wird.
In einem anderen Ausführungsbeispiel ist ein Verfahren
nach der Erfindung dadurch gekennzeichnet, dass für Befehlswörter mit einem zur zweiten Klasse gehörenden
Opcodeteil zumindest der Operanden-Deskriptorteil des ersten Befehlswortes in ein dazu belegtes zweites Indexregister
vor dem Einstellen des Programmzählerstandes auf die Speicheradresse geladen wird. Das Laden des Operanden-Deskriptors
in ein zweites Indexregister vor der Erzeugung der Speicheradresse bewirkt, dass Programmbefehle aus der
Folge von Befehlswörtern erspart werden können.
Eine erste bevorzugte Ausführungsform eines er-
^5 findungsgemässen Verfahrens ist dadurch gekennzeichnet,
dass bei der Durchführung des dritten Befehlswortes der Inhalt des Ergänzungs-Programmzählerregisters zum Orten
des Operanden-Deskriptorteils des ersten Befehlswortes
im Speicher benutzt wird. Da im Ergänzungs-Programmzählerregister der momentane Programmzählerstand gespeichert ist,
kann auf diese Veise rasch und einfach geortet werden, an welcher Stelle im Speicher sich der Operanden-Deskriptor
des ersten Befehlswortes befindet. Denn der Operanden-Deskriptor befindet sich im Operanden-Deskriptorteil dieses
^ ersten Befehlswortes, das der Programmzählerstand beim
Aufrufen im Schritt (a) des erfindungsgemässen Verfahrens
anzeigte.
Eine zweite bevorzugte Ausführungsform eines
PHN 10 909 Υ ' " 20.12.1984
- S'
erfindungsgemässen Verfahrens ist dadurch gekennzeichnet,
dass bei der Folge von Befehlswörtern zumindest ein viertes
Befehlswort den Operanden-Deskriptorteil aus dem ersten Befehlswort verarbeitet. Der Operanden-Deskriptor des
ersten Befehlswortes, der in einem Indexregister gespeichert
ist, wird mit Hilfe des vierten Befehlswortes verarbeitet. Der Deskriptorteil eines Befehlswortes mit zur zweiten
Klasse gehörendem Opcodeteil wird so für die Codierung von Operanden-Deskriptoren benutzt.
Eine weitere bevorzugte Ausführungsform eines
erfindungsgemässen Verfahrens ist dadurch gekanneich.net,
dass die Erzeugung der Speicheradresse für das zweite Befehlswort in folgenden Unterschritten erfolgt:
(1) die Bildung einer Tabellenadresse aus einer Speicher-
tabelle durch die Addierung eines Wertes beim Opcodeteil des ersten Befehlswortes, wobei dieser Wert in ein dazu
belegtes Operationserweiterungsregister voreingeschrieben ist;
(2) die Adressierung eines auf der gebildeten Tabellenadresse angeordneten Speicherwortes;
(3) das Aufrufen des Speicherwortes auf der erwähnten Tabellenadresse, das die Speicheradresse bildet.
Die Verwendung einer Speichertabelle ermöglicht eine Bestandsaufnahme der spezialisierten Befehlsvorräte,
mit denen Befehlswörter bearbeitet werden, die einen zur zweiten Klasse gehörenden Opcodeteil enthalten.
Die Erfindung bezieht sich weiter auf einen Datenprozessor mit einem Speicher für maschinencodierte Befehlswörter,
die je einen Opcodeteil und zumindest einen Operanden-Deskriptorteil
enthalten, wobei diese Opcodeteile zu einem endlichen Vorrat gehören, der in eine erste und in
eine zweite Klasse unterteilt ist, der Datenprozessor, weiter ein Programmzählerregister, einen Adressgeber und
einen Opcodedecoder enthält, der mit ersten Mitteln zum getrennten Erkennen von Opcodeteilen der ersten und zweiten
Klasse und mit zweiten Mitteln zum Erzeugen eines Steuersignals unter der Steuerung eines erkannten Opcodewortes
der zweiten Klasse versehen ist, der Datenprozessor weiter
ORJQINAL INSPECTED
PHN 10 909 tf 20.12.1984
ein Ergänzungs-Programmzählerregister und Übertragungsmittel
enthält, die einen ersten Steuereingang zum Empfangen des Steuersignals haben und weiter zum Übertragen des Inhalts
des Programmzählerregisters auf das Ergänzungs-Programm-Zählerregister unter der Steuerung eines empfangenen Steuersignals
versehen sind, und der Adressgeber zum Erzeugen einer Speicheradresse unter der Steuerung des Steuersignals
vorgesehen ist, wobei auf dieser Speicheradresse ein Anfangsbefehlswort einer Folge von Befehlswörtern zur Bearbeitung
eines Deskriptorteils angeordnet ist.
Ein derartiger Datenprozessor ist auch aus der bereits erwähnten Veröffentlichung "Instruction set extension"
bekannt.
Ein erfindungsgemässer Datenprozessor ist dadurch gekennzeichnet, dass der Datenprozessor mit einem Operationserweiterungsregister
vorgesehen ist, das einen zweiten Steuereingang zum Empfangen des Steuersignals und einen
Ausgang in Verbindung mit dem Adressgeber enthält. Hierdurch lässt sich auf einfache Weise der Adressgeber verwirklichen,
wenn das Operationserweiterungsregister einen Adress- oder einen Adressteilvorrat enthält.
Es ist vorteilhaft, dass im Datenprozessor .weiter ein zweites Indexregister vorgesehen ist, das einen dritten
Steuereingang zum Empfangen des Steuersignals und einen Dateneingang in Verbindung mit dem Speicher zum Empfangen
des Operanden-Deskriptorteils eines Befehlswortes unter
der Steuerung des Steuersignals enthält. Hierdurch können ausserdem Programmbefehle erspart werden.
Ausführungsbeispiele der Erfindung werden nachstehend an Hand der Zeichnung näher erläutert. Es zeigen
Fig. 1 ein erstes Ausführungsbeispiel einer Registerarchitektur einer erfindungsgemässen Computeranlage,
Fig. 1a das erfindungsgemässe Verfahren schematisch an Hand eines Ablaufdiagramms,
Fig. 2 ein erstes Computerprogramm, mit dem die erste Ausführungsform des erfindungsgemässen Verfahrens
veranschaulicht wird;
Fig. 3 (i bis Vl) das Ergebnis einer Operation
PHN 10 909 7 20.12.1984
des Coinputerprogramms nach Fig. 2,
Fig. h (a bis f) einige verschiedene Opcodes und
ihre zugeordnete Befehlsworteinteilung, und Fig. 5 (a bis f) einige verschiedene Deskriptorteile
in einem Befehlswort,
Fig. 6 ein zweites Ausführungsbeispiel einer Registerarchitektur einer erfindungsgemässen Computeranlage,
Fig. 7 ein zweites Computerprogramm, mit dem eine
zweite Ausführungsform des erfindungsgemässen Verfahrens
veranschaulicht wird,
Fig. 8 (i bis V) das Ergebnis einer Operation des Computerprogramms nach Fig. 7·
Ein Datenverarbeitungssystem oder ein Computer,
der einen Auftrag ausführen muss, macht dies mittels eines Programms, das sich zum Verarbeiten dieses Auftrages eignet.
Dieses Programm ist in einer bekannten Programmiersprache geschrieben, wie z.B. PASCAL, FORTRAN oder BASIC. Diese
Programmiersprachen sind jedoch Benutzersprachen, die ein
Computer zunächst in maschinencodierte Befehle übersetzen muss, um das Programm ausführen zu können. Diese Übersetzung
aus der Benutzersprache in maschinencodierte Befehle erfolgt meist in zwei Schritten. Ein erster Schritt enthält Übersetzung
aus der Benutzersprache in eine Assemblersprache und ein zweiter Schritt enthält die Übersetzung aus der
Assemblersprache in Maschinenbefehle. Der erste Schritt wird von einem Compiler und der zweite Schritt von einem
Assembler behandelt. Der Compiler und der Assembler sind beide Übersetzungsprogramme, die Teile der Computeranlage
sind. Der Anlagenprogrammierer hat bei der Herstellung des Compilers und des Assemblers die Architektur des
Computers berücksichtigt (CA = Computer Architektur, d.h. die Ansicht der Maschine von der Sicht des Anlagenprogrammierers
aus) .
In Computer Architektur wird u.a. zwischen zwei Architekturtypen unterschieden, d.h. zwischen HLL (High
Level Language = höhere Programmiersprache) und RISC-Architektur (Reduced Instruktion Set Computers = Computer
mit reduziertem Befehlsvorrat). HLL-Architektur bedeutet
PHN 10 909 X 20.12.1984
im wesentlichen, dass die Computer Hardware mit einem Befehlsvorrat
ausgerüstet wird, der sich für die Verarbeitung höherer Sprachen eignet. Hierdurch verkleinert sich der
Abstand zwischen Benutzersprache und Maschinenbefehlen, δ RISC-Arhcitektur bedeutet im wesentlichen, dass die Maschinenbefehle
derart einfach sind, dass die Hardware Höchstleistungen bieten kann. Jedoch ist bei der RISC-Architektur
die Übersetzung eines Benutzerprogramms wesentlich schwieriger .
Die Vorteile dieser beiden erwähnten Typen von Computerarchitektur werden nunmehr in einer Datenverarbeitungsanlage nach der Erfindung kombiniert. Eine derartige Datenverarbeitungsanlage enthält faktisch eine einfache Maschine, deren Befehlsvorrat erweiterbar gemacht wird, um Operationen vom HLL-Typ wirksam bearbeiten zu können.
Die Vorteile dieser beiden erwähnten Typen von Computerarchitektur werden nunmehr in einer Datenverarbeitungsanlage nach der Erfindung kombiniert. Eine derartige Datenverarbeitungsanlage enthält faktisch eine einfache Maschine, deren Befehlsvorrat erweiterbar gemacht wird, um Operationen vom HLL-Typ wirksam bearbeiten zu können.
Eine erfindungsgemässe Computeranlage enthält
eine zentrale Verarbeitungseinheit (CPU), beispielsweise mit einer Registerarchitektur. In Fig. 1 ist ein Ausführungsbeispiel
einer Registerarchitektur einer erfindungsgemässen Computeranlage dargestellt. Die Register Rn bis R„
sowie die Register ZEROR (8), ONER (9), PCR (Program Counter Register = Programmzählerregister) (b), SPR (Stack Pointer
Register = Stapelzeigerregister) (D), CCR (Condition Code Register = Konditionscoderegister) (e) und SER (Sign Extend
Register = Zeichenerweiterungsregister) (F) sind die üblichsten Indexregister eines Computers mit einer herkömmlichen
Registerarchitektur. Die Register IPCR (interpreter Program Counter Register = Interpreterprogrammzählerregister (c)
und OPER (Operation Extend Register = Operationserweiterungsregister) (A) bilden einen Zusatz zur CPU, mit dem eine
Registerarchitektur für Anwendung der Erfindung erweitert wird, wobei jedoch zu bemerken sei, dass das Register OPER
wahlfrei ist. In der einfachsten Ausführungsform kann man
mit dem Register IPCR auskommen. Die Verwendung des Registers IPCR von der Computeranlage bei der Bearbeitung eines
Programms steuert der Opcodeteil eines zu bearbeitenden Befehlswortes (Kurzbezeichnung OPCODE = Operation code).
In Fig. 6 ist ein zweites Ausführungsbeispiel
PHN 10 909 / 20.12.
einer Registerarchitektur einer erfindungsgemässen Computeranlage
dargestellt. Die Register RQ bis R_ sowie die Register
OPER und IPCR sind gleich, den gleichbezeichneten Registern aus dem ersten Ausftihrungsbeispiel nach Fig.
Die Register (8) und (9) haben jetzt die Bezeichnung Rg
und R9. Die Register PCR (D), SPR (E) und CCR (f) erfüllen
dieselbe Aufgabe wie die gleichbezeichneten Register des ersten Ausführungsbeispiels, haben jedoch jetzt eine andere
Rangordnung im System. Neu für das zweite Ausführungsbeispiel ist das Register VIR (B), dessen Bedeutung weiter in der
Beschreibung näher erläutert wird.
In dieser Computeranlage werden die OPCODES in zwei Klassen unterteilt: eine erste Klasse mit normalen
Opcodes und eine zweite Klasse mit virtuellen Opcodes.
Der Opcode-Decoder der Computeranlage ist derart verwirklicht,
dass er am Bitmuster der Opcodes erkennt, zu welcher Klasse sie gehören. So können beispielsweise alle Opcodes,
die als bedeutsamstes Bit (MSB) den Wert "0" haben, als
normale Opcodes erkannt werden und alle Opcodes, die als MSB den Wert " 1 M haben, als virtuelle Opcodes erkannt werden.
Hierdurch entsteht eine Verteilung, bei der jede Klasse gleich viel Opcedes enthält. Es sei dazu jedoch bemerkt,
dass auch jede andere Verteilung möglich ist. Zu einer bestimmten Verteilung gehört dann jeweils eine bestimmte
Verwirklichung des Opcodedecoders. Es wird klar sein, dass
jede Klasse zumindest einen Opcode enthalten muss.
Die Art, auf die Befehle mit normalem oder virtuellem
Opcode von einer erfindungsgemässen Computeranlage bearbeitet werden, ist schematisch an Hand des Ablaufdiagramms
der Fig. 1a veranschaulicht. Nach dem Lesen (50) eines Befehlswortes wird untersucht (51)» ob der Opcode
zur Klasse der virtuellen oder der normalen Opcodes gehört.
Wenn der Opcodedecoder einen zur Klasse normaler Opcodes gehörenden Opcode decodiert hat (N), wird der
zugehörige Befehl auf die bekannte Weise bearbeitet (5^).
Wenn jedoch der Opcodedecoder einen zur Klasse der virtuellen Opcodes gehörenden Opcode decodiert hat (ν), werden
jeweils ungeachtet des Inhalts des zugeordneten Befehls
PHN 10 909 y6 20.12.1984
nachstehende Bearbeitungen durchgeführt:
reg [iPCR] : = reg [pcr] (53)
reg [^PCRj : = mem [reg £0PEr3 + Opcode] (5*0
Hierbei bedeutet die Bearbeitung reg (jEPCRj : reg J-PCRJ ,
dass der Inhalt des Registers PCR in das Register IPCR überschrieben wird (: = bedeutet in der Programmiersprache
"wird"), mit anderen Worten die Adresse des Befehls, den der Programmzähler anzeigt (momentaner Programmzählerstand),
wird in das Register IPCR geladen. Die Bearbeitung TCgTPCRJ:
W = mem [reg ^OPER"! + Opcode"] bedeutet, dass in das Register
PCR das Speicherwort (in diesem Fall ein Adresswort) geladen wird, das an der Speichersteile mit der Adresse
reg [OPER"") + Opcode gespeichert ist. Die Adresse reg IjOPERj
+ Opcode wird dadurch zusammengesetzt, dass der Inhalt des Registers OPER zum Wert addiert wird, wie er im Opcodeteil
des Befehlswortes gegeben ist. Diese Bearbeitung reg [_PCRJ :
= mem freg POPERj + Opcode! bedeutet also, dass in das
Register PCR eine neue Adresse für den Programmzähler geladen wird. Es ist auch möglich, diese neue Adresse durch
andere Bearbeitungen als die Bearbeitung reg I PCRj: = mem freg [OPER"] + Opcode J[ zu erzeugen.
Mögliche andere Bearbeitungen sind z.B.:
a) Reg fpCR^ : = reg ToPER^J + Opcode.
Hierbei wird die neue Adresse direkt bestimmt, ohne dass ein Lesevorgang aus dem Speicher erfolgt;
b) Reg PpCR"^ : = Opcode + feste Adresse.
Diese Bearbeitung erfolgt, wenn, wie bereits erwähnt, das Register OPER nicht benutzt wird. Die neue Adresse wird
hier durch Addierung einer festen Adresse beim Opcodeteil des Befehlswortes zusammengesetzt.
c) Reg fpCR~~\ : = mem Γ Opcode + feste Adresse^
Auch bei dieser Bearbeitung wird das OPER-Register nicht benutzt. Dagegen enthält diese Bearbeitung immerhin eine
Speicherleseoperation. Auf dieser neuen Adresse für den Programmzähler befindet sich jetzt ein erster Befehl einer
Folge von Befehlen, die die Bedeutung des Befehlswortes mit virtuellem Opcode bewerten (55)· Diese Befehlsfolge
wird immer von einem letzten Befehl aus dem Programm abge-
PHN 10 909 yf 20.12.198**
schlossen, der dem Befehl mit virtuellem Opcode direkt
folgt, der die Verarbeitung der erwähnten Folge durchführt. Ein derartiger letzter Befehl hat beispielsweise die Form
reg £pCr3 : = reg flPClQ (5&)
Hierbei wird dann der Programmzählerstand erneut auf den Wert eingestellt, den er beim Beginn der Durchführung des
Befehls mit virtuellem Opcodeteil hatte.
Der Nutzeffekt eines virtuellen Opcodes besteht darin, dass bei jedem virtuellen Opcode ein Code-Abschnitt
durchgeführt wird. In diesem Code-Abschnitt "der Interpreter"
des virtuellen Opcodes) ist es möglich, sich auf wirksame Weise auf den (die) Argumentdeskriptor(en) des virtuellen
Opcodes zu beziehen, wenn IPCR als Indexregister benutzt wird.
Hat die Computeranlage eine Registerarchitektur, wie in Fig. 6 dargestellt, wird bei der Decodierung eines zur Klasse der virtuellen Opcodes gehörenden Opcode neben den Bearbeitungen (53) und (5^0 eine weitere Bearbeitung (150) durchgeführt:
Hat die Computeranlage eine Registerarchitektur, wie in Fig. 6 dargestellt, wird bei der Decodierung eines zur Klasse der virtuellen Opcodes gehörenden Opcode neben den Bearbeitungen (53) und (5^0 eine weitere Bearbeitung (150) durchgeführt:
reg (jVIR"3 : = [_!.»."]
Hierbei wird der Inhalt zumindest des Stellendeskriptorteils des Befehlsregisters LI.R."^der Computeranlage in das
Register VIR übergeschrieben.
Ein Befehl mit einem virtuellen Opcode unterscheidet sich im wesentlichen von einem Befehl JUMP SUBROUTINE,
mit einem normalen Opcode dadurch, dass bei der Bearbeitung des Unterprogramms der Programmzähler in den Speicher
zwischengespeichert wird. Einerseits nimmt der dafür benötigte Speicherschreibvorgang zusätzliche Bearbeitungszeit
in Anspruch, zum anderen ist es dadurch nicht möglich, (ohne zusätzliche Bearbeitungszeit) den alten Programmzählerstand
als Indexregister zum Aufrufen von Argumentdeskriptor (en) zu verwenden.
In Fig. 2 ist ein Computerprogramm dargestellt, mit dem ein erstes Ausführungsbeispiel der Wirkung einer
erfindungsgemässen Computeranlage näher erläutert wird.
Das Programm ist nur als Beispiel herangezogen. Es wird klar sein, dass sich eine erfindungsgemässe Computeranlage
PHN 10 909 ^ 20.12.1984
nicht auf die Durchführung von Programmen dieser Art allein beschrankt.
In Fig. 2 lassen sich fünf Spalten unterscheiden. In der ersten Spalte sind die Speicheradressen der Befehle
angegeben. Die zweite Spalte enthält die in Maschinencode geschriebenen Befehle (Hexadezimaldarstellung). Die dritte
und vierte Spalten enthalten die in Assemblersprache geschriebenen Befehle und die fünfte Spalte enthält den
Kommentar zum Befehl.
Vor der weiteren Erläuterung an Hand der Fig. 2 werden an Hand der Fig. k und 5 zunächst einige allgemeine
Aspekte der Befehle beschrieben, um'das Lesen des Programms und die Verarbeitung des Programms zu erläutern. Fig. 4(a)
bis (f) zeigen Opcodes und ihre zugeordnete Befehlsworteinteilung.
Ein Befehl gemäss der Darstellung im Maschinencode (Fig. k oder zweite Spalte Fig. 2) enthält 32 (4 χ 8)
Bits. Die Bits 31 bis 2k enthalten immer den Opcode. Da
der Opcodeteil 8 Bits enthält, sind 2 = 2$6 verschiedene
Opcodes möglich. Im Beispiel nach Fig. 2 gehören die Opcodes OO bis F8 zur Klasse der virtuellen Opcodes und
die Opcodes F9 bis FF zur Klasse der normalen Opcodes. Die Einteilung der übrigen Bits (θ bis 23) ist von der
Art und der Klasse abhängig, zu denen der Opcode gehört.
In Fig. h(a) ist das Muster eines Befehls ersichtlieh,
der als Opcode einen der normalen Opcodes LOADADRESS (F9), LOADVALUE (FA) oder STORE (FB) enthält. Bei diesem
Befehl enthalten die Bits 20 bis 23 die Nummer des Registers
(RUN), auf der sich die vom Opcode angegebene Operation
bezieht, und die Bits 0 bis 19 enthalten den Stellendeskriptor (LCDSC). Der Inhalt dieses Stellendeskriptors wird
weiter unten näher erläutert.
In Fig. h(h) ist das Muster eines Befehls ersichtlich,
der als Opcode den normalen Opcode MONADIC (FC) hat. Bei diesem Befehl enthalten die Bits 20 bis 23 die Nummer
^5 des Registers (RGN), auf das sich die vom Opcode angegebene
Operation bezieht, und die Bits 16 bis 19 geben die Art
der MONADIC-Operation an (MNPC) (Erhöhung, Verminderung usw.) Die übrigen Bits enthalten keine für diese Erfindung relevante
PHN 10 909 y2f 20.12.1984
Information.
In Fig. 4(c) ist das Muster eines Befehls ersichtlich,
der als Opcode den normalen Opcode DYADIC (FC) hat. Bei diesem Befehl enthalten die Bits 20 bis 23 die Nummer
des ersten Registers (RGN), und die Bits 12 bis I5 die
Nummer des zweiten Registers (ROT), auf das sich die vom
Opcode angegebene Operation bezieht. Die Bits 16 bis
geben die Art der DIADIC-Operation (DPC) an (Addieren, Subtrahieren, logische UND usw.). Die übrigen Bits enthalten
keine für diese Erfindung relevante Information.
In Fig. 4(d) bzw. 4(e) ist das Muster eines Befehls
ersichtlich, der als Opcode den normalen Opcode JUMP SUBROUTINE (FE) bzw. JUMP CONDITIONAL (FF) hat, wobei für
den Befehl mit dem Opcode FF von den Bits 20 bis 23 die Bedingung (UND) angegeben wird. Die Bits O bis I9 enthalten
jeweils-den Stellendeskriptor. (LCDSC). Venn jetzt die
Computeranalge den Opcode "FE" decodiert, werden folgende Operationen durchgeführt:
mem [reg £sPKQ] : = reg QpCR]
reg £sPr) : = reg CsprI + 1
reg £PCR] : = effa (LCDSC),
wobei "effa" bedeutet "wirksame Adresse". Bei der Decodierung des Opcodes "FF" wird beim Erfüllen der Bedingung
(CND) folgende Operation durchgeführt:
reg [pCR"} : effa (LCDSC)
(Der Programmzählerstand (Ref (^PCR} ) wird nicht festgehalten,
da bei einem JUMP CONDITIONAL keine Rückkehr erfolgt.
Aus Fig. 4(f) ist das Muster eines Befehls mit einem virtuellen Opcode ersichtlich (OO ... F8). Die Bits
O bis 23 werden hierabhängig vom Bewertungsprogramm verwendet. Veiter unten wird dies näher erläutert.
Der Stellendeskriptor beschreibt die zum Befehlsoperanden gehörende Adresse. Die Computeranlage ist mit
Hardware-Mitteln zum Bewerten dieses Stellendeskriptors ausgerüstet. In Fig. 5 sind einige Beispiele von Stellendeskriptorteilen
in einem Befehlswort dargestellt. Für jeden Stellendeskriptor geben die Bits 16 bis 19 die Art
des Deskriptors an, die nachstehend für jeden der Teile
PHN 10 909 IX 20.12.1984
(a) bis (f) nach Fig. 5 beschrieben wird.
(a) In Fig. 5(a) ist das Wort "0000" für eine Registeroperation hinsichtlich des Registers von den Bits 12
bis 15 gegeben. Der Inhalt der Bits 0 bis 11 ist für die Beschreibung der Erfindung nicht relevant.
(b) In Fig. 5(b) gibt das Wort "0001" eine normale Indexoperation an. Hiervon ist die resultierende Adresse
a + Reg fiO » "wobei a die von den Bits 0 bis 11 gegebene
Zahl und η die von den Bits 12 bis 15 gegebene Registernummer darstellt.
(c) In Fig. 5(c) gibt das Wort "0010" eine Indexoperation
an, die von einer Anpassungsoperation voreingestellt ist (pre-adjust index). Eine derartige Operation wird
in zwei Schritten durchgeführt:
1S die durch a + Reg £n3
gegebene Adresse
und auch
und auch
Reg [_n~] : = a + Reg \_ n^
(a und η haben dieselbe Bedeutung wie oben angegeben).
(d) In Fig. 5(d) gibt das Wort "0011" eine Indexoperation
an, der eine Anpassungsoperation folgt (post-adjust index). Eine derartige Operation wird ebenfalls in
zwei Schritten durchgeführt:
die von Reg Ausgegebene Adresse,
und auch Reg £n3: = a + Reg L n^
(mit derselben Bedeutung für a und n). Bei einer Indexoperation, die von einer Anpassungsoperation begleitet wird, werden also jeweils sowohl
ein Wert als auch eine Adresse bestimmt. Die Verwendung der Adresse wird vom Opcodeteil bestimmt.
(e) In Fig. 5(e) gibt das Wort "0100" eine Zahl an, deren Wert von den Bits 0 bis 15 gegeben ist ("immediate").
(f) In Fig. 5(f) gibt das Wort "1111" eine Bewertungsoperation an. Der Inhalt des Registers, dessen Nummer
"*5 von den Bits 12 bis 15 gegeben wird, wird als Stellendeskriptor
betrachtet. Der Inhalt der Bits 0 bis 11 ist für Daten bestimmt, die in der Folge von Befehlen
verwendet werden, die von einem Befehl mit virtuellem
PHN 10 909 yS 20.12.1984
Opcodeteil eingeleitet werden.
Anhand der Daten nach Fig. h und 5 wird das
Computerprograimn nach Fig. 2 erläutert. Das Ergebnis der
Ausarbeitung dieses Programms ist in Fig. 3 veranschaulicht (l bis Vl). Jedesmal wird in der weiteren Beschreibung
neben dem Befehl eingeklammert, in welchem Teil der Fig. der betreffende Befehl ausgearbeitet ist.
Der erste Befehl des Computerprogramms befindet sich an der Speicherstelle mit der Adresse O und lautet
FAD47FFF; LOADVAL SPR,#$7FFF (Fig.3(l) Befehl 1).
Der Opcode FA gibt an, dass es sich hier um einen Befehl mit normalem Opcode handelt (Fig. 4(a)), d.h.. den Befehl
"LOAD VALUE". Die Registernummer 11D" gibt an, dass das zu
benutzende Register das Register SPR ist (Fig. i). Der Stellendeskriptor enthält die Zahl "47FFF", hierin gibt
die Ziffer k an, dass es ein Stellendeskriptor vom Typ ist,
wie er in Fig. 5(e) abgebildet ist, d.h. eine Zahl (immediate) 7FFF. Dieser Befehl bedeutet also: "In das Stapelzeigerregister
(SPR) (D) die Zahl (k) mit dem Vert 7FFF laden".
Im Programmzählerregister (PCR) ist nunmehr die Zahl 1 gespeichert, was bedeutet, dass sich der nächste Befehl
im Speicher 1 befindet. Es sei dazu bemerkt, dass in diesem Ausführungsbeispiel das Register ZEROR jeweils mit dem
Wert "00000000" und das Register ONER jeweils mit dem Wert "00000001" geladen ist. Die konstanten Werte 0 und 1
werden oft verwendet. Es ist also vorteilhaft, diese konstanten Werte in einem Register zur Verfügung zu haben,
wodurch sie durch einfache Registeroperationen aufgerufen werden können.
An der Speicherstelle 1 befindet sich der zweite
Befehl des Computerprogramme. Dieser zweite Befehl lautet:
FAAi*7F00; LOADVAL OPER, # $7F00 (Fig. 3(l), Befehl 2).
Analog dem ersten Befehl ist dies ein Befehl mit normalem Opcode "LOADVAL". Die Registernummer "A" gibt das Register
OPER (Fig. 1) an. Dieser Befehl bedeutet also: In das Operationserweiterungsregister (OPER) die Zahl mit dem Wert
7F00 laden. In das Register PCR ist inzwischen die Zahl 2 geladen.
PHN 10 '909 >€" 20. 12. 1984
Der dritte Befehl lautet:
FEO184OO; JSR ^OO + QZEROR^ (Fig. 3(l) , Befehl 3)
Der Opcode FE gibt den Befehl mit dem normalen Opcode "JUMP SUBROUTINE" Fig. 4(d)) an. Der Stellendeskriptor
enthält die Zahl "18400", hierin gibt die Ziffer "1" an, dass es eine normale Indexoperation betrifft (Fig. 5(b)).
Die Ziffer 8 gibt das Register ZEROR und die Zahl "400" die Verschiebung an. Durchführung dieses Befehls ergibt:
a) mem [reg £sPR]3 : = reg [pCR]
mem £7FFF""] : = 00000003
mem £7FFF""] : = 00000003
Das bedeutet, dass an der Speicherstelle mit der Adresse 7FFF die Zahl 3 eingeschrieben wird. Das -bedeutet wieder,
dass die Adresse des folgenden Befehls (Speicheradresse3) an der Speicherstelle 7FFF gemerkt wird.
b) reg [sPR"] : = reg [sPR] + 1
reg C-SPR*] : = 00007FFF + 1 = 00008000
c) reg £>CR} : = effa(LCDSC)
effa (Loose)bezeichnet den wirksamen Inhalt des Stellendeskriptors,
der für dieses Beispiel durch 400 + [[ZERO!?)
gegeben ist. Da jedoch 00000000 im Register ZEROR stehen, ist effa (LCDSC) = 00000^00
reg [pCR]: = 00000^00.
Das bedeutet, dass der Programmzähler jetzt die Speicherstelle mit der Adresse 400 angibt. Es ist also ein Sprung
nach der Speicherstelle mit der Adresse hOO durchgeführt.
Der an der Speicherstelle mit der Adresse 400
angebrachte vierte Befehl lautet:
FA03B001; LOADVAL RO, £pCR] ++1
FA03B001; LOADVAL RO, £pCR] ++1
7FFFFFFF: ^7FFFFFF Fig. 3(l), Befehl k)
Die Registernummer dieses Befehls mit normalem Opcode
LOAD VALUE ist "0". Im Stellendeskriptor mit dem Wert "3B001" gibt die Ziffer 3 eine Indexoperation an, der
eine Anpassungsoperation folgt (Fig. 5(d)). Der Buchstabe B gibt an, dass sich die Anpassung auf das Register PCR bezieht
(Fig. 1), und die Zahl "001" gibt die Anpassungsgrösse an. Dieser Befehl bedeutet also
Reg Qo*] : = mem ([reg CPCIU]
Reg £o3 : = mem f ^Oil Reg C0"] '· = 7FFFFFFF.
Reg Qo*] : = mem ([reg CPCIU]
Reg £o3 : = mem f ^Oil Reg C0"] '· = 7FFFFFFF.
PHN 10 909 yr 20%12.1984
In das Register RO den Wert laden, der an der Speicheradresse gespeichert ist, die vom Inhalt des Registers PCR
gegeben wird, und anschliessend den Inhalt des Registers PCR mit der Zahl "001" erhöhen. Im Register PCR ist der
Wert (4OO + 1 = ) 401 gespeichert. An der Adresse 401 befindet sich der Wert 7FFFFFFF, der jetzt in das Register RO
gespeichert wird. Die Anpassungsoperation ergibt folgendes: reg £ PCR"] : = reg ^PCR"] + 1
reg J[PCR"] : = 401 + 1
reg J[PCR"] : = 401 + 1
reg £PCR-] : = 402.
Der an der Speicherstelle mit 402 befindliche fünfte Befehl lautet wie folgt:
FAB2DFFF; LOADVAL PCR, -1++ £SPR^J (Fig. 3(l), Befehl 5).
Die Registernummer "B" zeigt auf das Register PCR. Im Stellendeskriptor mit dem Wert "2DFFF" zeigt die Ziffer 2
eine Indexoperation an, der eine Anpassungsoperation vorangeht (Fig. 5(c)); der Buchstabe D bezeichnet das Register
SPR und die Hexadezimalzahl FF ^-Komplementdarstellung) bedeutet "-1", die die Anpassungsgrösse angibt.
reg Γ SPRl : = reg fSPR] -1
reg £SPR]
reg £SPR")
reg £PCR]
reg £SPR")
reg £PCR]
= 00008000 -1
= 00007FFF
= mem £reg
= mem 7FFF
= 00000003,
= 00007FFF
= mem £reg
= mem 7FFF
= 00000003,
reg £pcr]
denn wie angegeben beim dritten Befehl ist an der Speicherstelle mit der Adresse 7FFF der Wert "3" geladen. Das Auslesen
aus dem Speicher und das Laden von 00000003 in das Register PCR bedeutet, dass das Unterprogramm beendet ist,
und dass das normale Programm jetzt mit dem Befehl an der Adresse 3 des Speichers wieder audgenommen wird.
Der sechste Befehl lautet
FA742OOO; LOADVAL R7,# £2000 (Fig. 3(II),Befehl 6).
Dieser Befehl bedeutet: In das Register R7 die Zahl mit dem Wert 2000 laden.
Der siebte Befehl lautet
00040020; ADDSTACK#^20 (Fig. 3(ll), Befehl 7)
Der Opcode "00" gibt an, dass es sich hier um einen Opcode
PHN 10 909- V6" S 20.12.198U
aus der Klasse der virtuellen Opcodes handelt (00 6 £ OO...F8j).
Der Decoder der Computeranlage decodiert diesen virtuellen Opcode und die Anlage führt dadurch folgende Operationen aus:
a) reg [iPCR] : = reg OCR3
b) reg £ PCR*] : = mem [reg foPElf] + OPCODE]
b) reg £ PCR*] : = mem [reg foPElf] + OPCODE]
Anwendung dieser Operationen bei diesem siebten Befehl ergibt
a) reg JJPCRTJ : = reg QPClQ
reg £lPCR] : = 00000005.
reg £lPCR] : = 00000005.
Der Inhalt des Registers PCR (momentaner Programmzählerstand) wird also in das Register IPCR geladen. Im
Gegensatz zu einem JUMP SUBROUTINE-Befehl (dritter Befehl)
wird hier also keine Schreiboperation im Speicher durchgeführt. Ausserdem nimmt das Laden von PCR in IPCR bedeutend
weniger Bearbeitungszeit, da dies eine normale Registeroperation ist.
b) reg [ PCR] : = mem[reg {^OPER"] + OPCODE]
reg [ PCR] : = mem \_ 7F00 + 00J]
reg [_PCR-] : = mem [7*Όθ"}
reg CPCR] : = 00001000
denn, wie aus Fig. 2 ersichtlich, ist an der Speicherstelle mit der Adresse 7FOO das Wort 00001000 geschrieben,
das jetzt in das Register PCR geladen wird. Die Daten aus der letztgenannten Figur geben ein, dass der Inhalt des
Stellendeskriptors unwichtig wäre. Dies ist jedoch nicht der Fall. Bei der weiteren Beschreibung des Programms wird
sich zeigen, dass der Stellendeskriptor bei einem Befehl mit virtueller Opcode tatsächlich verwendet wird und sogar
auf eine derartige Weise, dass er bereits soviel Daten enthält, mehr als beispielsweise möglich wäre bei der
Verwendung des Befehls JUMP SUBROUTINE, bei dem nur eine Speicheradresse aufgenommen werden kann.
Der achte Befehl an der Speicherstelle mit der Adresse 1000 lautet wie folgt:
FAO27FFF; LOADVAL RO,-1++ £r7] Fig. 3(ll), Befehl 8)
Dieser Befehl beinhaltet folgende Operationen:
PHN 10 909 tf* 20.12.198^4
= -1 +reg
= -1 + 2000
= -1 + 2000
= IFFF
= mem
= mem
[reg
[ifff]
= 00000000
a) Reg [7l
Reg £7]
Reg £7}
Reg £7]
Reg £7}
b) Reg £03
Reg
Reg
Reg
Reg
An der Speicherstelle mit der Adresse 1FFF befindet sich der Wert OOOOOOOOO. Diese Operationen stellen faktisch
eine "POP"-Operation dar, die am Register R7 angewandt wird, das die Rolle eines Stapelzeigers erfüllt.
Der neunte Befehl lautet wie folgt:
FA11CFFF; LOADVAL R1, -1+ JJCPCR^ (Fig. 3(ll) Befehl 9)
Dieser Befehl beinhaltet, folgende Operation: reg J 1~1 : = mem [ -1 + reg
reg
reg
[Ί] : = mem £ -1 + 5~)
Reg ) 1 ~J : = mem
In das Register RI wird also der Inhalt der Speicherstelle mit der Adresse k geladen. Jedoch befindet sich dort genau der siebte Befehl, der 00040020 als Maschinencode hat.
In das Register RI wird also der Inhalt der Speicherstelle mit der Adresse k geladen. Jedoch befindet sich dort genau der siebte Befehl, der 00040020 als Maschinencode hat.
Diese Operation dient zum Aufrufen des Stellendeskriptors des virtuellen Befehls, um ihn in einem weiteren Befehl
zu verwenden.
Der zehnte Befehl lautet: FA1F1000; LOADVAL R1 , ^R1 Fig. 3(ll), Befehl 1o).
Im Stellendeskriptor "F1000" gibt der Buchstabe "F" an,
dass es sich hier um eine Bewertungsoperation handelt (Fig. 5(f))· Dieser Befehl beinhaltet also: In das Register
R1 die Bedeutung des Stellendeskriptors des Befehls laden, der in das Register R1 geladen ist. Der in das Register R1
geladene Befehl bei der Bearbeitung des neunten Befehls hat als Stellendeskriptor "40020", was wieder bedeutet:
die Zahl "4" mit dem Wert 20. Demzufolge wird jetzt im Register RI das Wort "00000020" geschrieben.
Daraus ist die Wichtigkeit des Stellendeskriptors bei einem Befehl mit virtuellem Opcode ersichtlich. In diesen Stellendeskriptor
wird Information eingeschrieben, die in der von einem Befehl mit virtuellem Opcode eingeleiteten Befehlsfolge
verarbeitet wird.
PHN 10 909 3Θ 2O.12.1984
der elfte Befehl lautet:
FDOOIOOO; Dyadic ADD RO, R1 Fig. 3(Πΐ), Befehl 11)
Der Opcode "FD" gibt eine DYADIC-Operation (Fig. 4(c))
zwischen einem ersten Register RO und einem zweiten Register R1 an. Die Art der Operation (Vert 0, Bits 16 bis I9)
ist eine Addieroperation. Dieser Befehl bedeutet also: "Den Inhalt des Registers RO und des Registers RI addieren
und das Ergebnis in das Register RO einschreiben. Reg £cf] : = Reg 0 + Reg 1
ID Reg £b~] : = 00000000 + 00000020
Reg (V) : = 00000020"
Reg (V) : = 00000020"
Der zwölfte Befehl lautet'
FBO37OOI: STORE RO, CR?"] ++1 (Fig. 3(Πΐ), Befehl 12).
Dieser Befehl beinhaltet folgende Operationen:
a) men (jreg £73"! : = reSL03
mem [\ FFF-] : = 20.
Also wird an der Speicherstelle mit der Adresse 1FFF die Zahl 20 geschrieben
b) reg £"73 : = reg Γ7ΙΙ + 1
b) reg £"73 : = reg Γ7ΙΙ + 1
reg {/7 3 : = 1FFF + 1
reg £73 : = 2000
Diese Operationen stellen faktisch eine "PUSH"-Operat±on dar,
die auf dem Register R7 angewandt wird, das die Rolle eines Stapels erfüllt.
Der dreizehnte Befehl lautet:
FABOCOOO; LOADVAL PCR, IPCR (Fig. 3(ΙΠ), Befehl I3)
Es ist der Schlussbefehl, mit dem die von einem Befehl mit virtuellem Opcode eingeleitete Befehlsfolge abgeschlossen
wird. Dieser Befehl enthält die Operation: "In das Register PCR den Inhalt des Registers IPCR laden". Da im Register
IPCR der Stand des Programmzählers aufbewahrt wurde, bedeutet dies also, dass der Befehl nach den Befehlen mit virtuellem
Opcode, der jetzt verarbeitet ist, jetzt an der Reihe sein wird. Der Gesamteffekt der virtuellen Befehle (siebter
Befehl ADDSTACK#20) ist jetzt, dass bei der Spitze des
Stapels, der zum Stapelzeiger gehört (Register 7)» die Zahl 20 addiert ist.
Der vierzehnte Befehl an der Speicherstelle mit
PHN IO 909 2Λ 20.12.198*1
der Adresse 5 lautet:
00018100; ADDSTACK $100+ QzEROr] (Fig. 3(Πΐ), Befehl 14).
Der Opcode "00" gehört zur Klasse der virtuellen Opcodes. Die Computeranlage führt also folgende Operationen durch
a) reg [ IPCR^ : = reg fPCR^
reg /iPCR"] : = 6
b) reg /TPCRI : = mem £ reg [ OPER*] + OPCODE"] reg £PCR"3 : = mem ^7FOO + Oo]]
b) reg /TPCRI : = mem £ reg [ OPER*] + OPCODE"] reg £PCR"3 : = mem ^7FOO + Oo]]
reg £"PCR"3 : = 00001000.
Der fünfzehnte Befehl an der Speicherstelle mit
der Adresse 1000 lautet
FA027FFF; LOADVAL RO,- 1 ++ j^R7~] (Pig· 3(HI.) ,Befehl 15).
Dieser Befehl betrifft folgende Operationen
a) reg [V]: = -1 + reg {_ 7~]
reg £7l: = -1 + 2000
reg £7l: = -1 + 2000
reg [73: = 00001FFF
b) reg Co^: = mem freg jQ 7^3
reg £03: = mem £iFFF"]
reg £ 0^: = 20
reg £03: = mem £iFFF"]
reg £ 0^: = 20
Der Wert 20 an der Speicherstelle mit der Adresse 1FFF ist
die Folge der Bearbeitung des zwölften Befehls. Der sechzehnte Befehl lautet
FAI1CFFF; LOADVAL R1,-1+ £IPCrQ (Fig.3(lV) Befehl i6).
Dieser Befehl betrifft folgende Operationen RegTl]: = mem f - 1 + reg Q IPCR^J 3
Reg O3: = mem f?"1 + ^U
Reg ιοί = mem Γ 53
Reg [[T): = 00018100
Erneut wird (analog dem neunten Befehl) also der Code des Befehls mit virtuellem Opcode in das Register RI geladen.
Der siebzehnte Befehl lautet
FA1F1000; LOADVAL R 1,^RI (Fig.3(lV) ,Befehl 17).
Dieser Befehl ist analog dem zehnten Befehl. Der in das
Register R1 geladene Befehl hat als Stellendeskriptor "18100". der folgende Operationen angibt:
Reg(j~J: = mem£§100 + reg £ ZEROR
Reg £O : = mem £i00 +
Reg £1 1 : = mem C.I00H
PHN 10 909 -2"2 2u.-i2.1984
2£
Reg £_1 "\ : = FFFFFFEO O 0 U U 3 7
In das Register R1 wird also das Wort FFFFFFEO geladen. Auch hier tritt wieder zu Tage, auf welche Weise in einer
erfindungsgemässen Computeranlage der Stellendeskriptor bei einem Befehl mit virtuellem Opcode verwendet wird.
Der achtzehnte Befehl lautet
FDOO1000: DYADIC ADD R0,R1 (Fig.3(lV), Befehl 18).
Dieser Befehl betrifft folgende Operation Reg £ 0]: = Reg Qol + Reg C13
Reg £0"3: = 00000020 + FFFFFFEO
Reg £o3: = 00000000
Reg £0"3: = 00000020 + FFFFFFEO
Reg £o3: = 00000000
Das Ergebnis dieser Operation 00000000 hat zur Folge, dass der Wert 00000020 in das Register CCR geladen wird.
Der neunzehnte Befehl lautet FBO37OOI; STORE RO, £r7*! ++1 (Fig. 3(lV) , Befehl I9),
der folgende Operation betrifft
a) mem [reg C 7"J]: = Reg £ 0"3
mem [IFFFI : = Reg £0l
mem £i FFF-] : = 00000000
b) Reg [7I: = Reg £7! + 1
reg L 71: = 1FFF + 1
Reg £73: = 00002000
a) mem [reg C 7"J]: = Reg £ 0"3
mem [IFFFI : = Reg £0l
mem £i FFF-] : = 00000000
b) Reg [7I: = Reg £7! + 1
reg L 71: = 1FFF + 1
Reg £73: = 00002000
Der zwanzigste Befehl lautet
FABOCOOO, LOADVAL PCR,IPCR (Fig.3(lV), Befehl 20),
der folgende Operationen betrifft:
Reg £pCR3 : = Reg CIPCR^
Reg £pCR"3 : = OOOOOOO6
Reg £pCR3 : = Reg CIPCR^
Reg £pCR"3 : = OOOOOOO6
Also wird erneut der Endbefehl, mit dem eine Befehlsfolge eingeleitet wird, von einem virtuellen Opcode abgeschlossen.
Der einundzwanzigste Befehl lautet 01018101; ORSTACK $101+ £zER0R31 (Fig. 3(v), Befehl 2i).
Dieser ist erneut ein Befehl mit einem Opcode ("01"), der zur Klasse der virtuellen Opcodes gehört. Die durchzuführenden
Operationen sind also
) Reg JCipCRI : = reg
Reg ^IPCR^ : = 00000007
b) Reg £PCR 2 : = mem [reg /foPER*] + OPCODE^]
Reg [.PCR "3 : = mem £ 7F00 + 01 2
PHN 10 909 «3 20.12.1984
Reg £PCHT| : = mem £ 7F01"^
Reg fPCRj : = OOOO1O1O (siehe Fig. 2)
Dieser Befehl ergibt nunmehr, dass bei einem virtuellen
Opcode der Inhalt dieses Opcodes dazu dient, sowohl einen virtuellen Opcode zu erkennen als auch eine Speicheradresse
eines Anfangsbefehls einer Folge von' Befehlswörtern zu
bestimmen, die die Bedeutung des Befehls mit dem virtuellen
Opcode bestimmen.
Der zweiundzwanzigste Befehl an der Speicherstelle mit der Adresse 1010 lautet:
FA027FFF- LOADVAL R0,-1++£r7"J (Fig.3(IV) Befehl 22).
Dieser Befehl umfasst folgende Operationen:
a) Reg fo^: = mem [-1 + Reg £ TJ]
Reg [0~}: = mem Γ-1 + 2000]
Reg [0~}: = mem Γ-1 + 2000]
Reg £*0j: = mem pFFFj
Reg lp"y. = 00000000 (siehe dafür den Befehl 19)
b) Reg [73: = -1 + Reg £73
Reg \J7~]: = 00001FFF
Reg \J7~]: = 00001FFF
Der dreiundzwanzigste Befehl lautet FA11CFFF; LOADVAL R1,-1+£IPCR]] (Fig. 3(V), Befehl 23)
Dieser Befehl betrifft folgende Operationen:
Reg [j13 : = mem £-1 + Reg pEPCRll
Reg £O : = mem £-1 + 7"]
Reg [1J : = mem Γ6"]
Reg £2 T 33 : = 01018101
Reg £2 T 33 : = 01018101
Der vierundzwanzigste Befehl lautet
FA1F1000; LOADVAL R^,f^R^ (Fig. 3(v) , Befehl 2k).
Der Stellendeskriptor des Befehls im Register 1 enthält
"18101". Dies betrifft als Operation Reg CO : = mem £^101 + Reg jJZerorU 3
Reg £'1 3 : = mem £ioO
Reg £13 : = F0000100
Der fünfundzwanzigste Befehl lautet
FDO6IOOO; Dyadic OR RO,R1 (Fig. 3(v), Befehl 25)
In diesem Befehl bezeichnet die Ziffer "6" eine logische
"0DER"-0peration.
Reg £θΊ : = RegCo^V Reg
Reg C°3 : = FOOO0100.
Reg C°3 : = FOOO0100.
PHN 10 909 -34 20.12.1984
Jetzt hat das Einschreiben einer negativen Ziffer im Register O (F, 2-Komplementdarstellung ) zur Folge, dass der
Wert 00000010 in das Register CCR geladen wird. Aus diesem
Befehl und aus vorigem Befehl zeigt es sich jetzt möglich, mit Hilfe virtueller Opcodes eine Verschiedenheit an Operationen
durchführen zu lassen.
Der sechsundzwanzigste Befehl lautet
FBO37OO1; STORE RO, £R7 HJ + + 1 (Fig. 3(Vl),Befehl 26).
Dieser Befehl betrifft folgende Operationen
a) mem £'Reg £Τ$ : = Reg £ 0 3
mem TiFFFU : = FOOO0100
b) Reg Ol : = Reg [73 + 1
mem TiFFFU : = FOOO0100
b) Reg Ol : = Reg [73 + 1
Reg C7TJ : = 1FFF + 1
Reg £7J : = 2000
Der siebenundzwanzigste Befehl lautet FABOCOOO; LOADVAL PCR,IPCR (Fig. 3(Vl), Befehl 27), der sich bezieht auf:
Reg £7J : = 2000
Der siebenundzwanzigste Befehl lautet FABOCOOO; LOADVAL PCR,IPCR (Fig. 3(Vl), Befehl 27), der sich bezieht auf:
Reg [pCRI : = reg £IPCR^
Reg [PCR"3 : = 7
Die Computeranlage bearbeitet nunmehr die an der Speicherstelle mit der Adresse 7 befindlichen Befehle und führt
auf diese Weise das Programm weiter aus. Die Ausarbeitung dieses Befehls wird nicht weiter erläutert, da sie für
die Beschreibung der Erfindung unwichtig ist. Dieser Befehl schliesst dann gleichfalls das Computerprogramm ab, das zur
Veranschaulichung der Wirkung einer erfindungsgemässen Computeranlage beschrieben wurde.
Im wesentlichen treten aus der Beschreibung dieses Computerprogramms zwei besondere Aspekte hervor:
a) die Behandlung eines Befehls mit virtuellem Opcode,
b) die Behandlung des Stellendeskriptors bei einem Befehl mit virtuellem Opcode.
Die Verwendung von Befehlen mit virtuellem Opcode in einer Computeranlage bietet dem Anlagenprogrammierer ein breites
Spektrum von Möglichkeiten. Durch die Verwendung eines Befehls mit virtuellem Opcode kann eine Befehlsfolge zur
Durchführung einer bestimmten Bearbeitung eingeleitet werden. Diese Bearbeitung kann eine Addierung (Befehl 11), eine
PHN 10 909 25 20.12.1984
Multiplikation oder jede andere Operation sein. Der Anlagenprogrammierer
kann durch, eine selbstgewählte Begriffsbestimmung virtueller Opcodes die Computeranlage derart
programmieren, dass neue Befehle entstehen. Hinsichtlich der wirksamen Speicherung von PCR und IPCR und dadurch,
dass IPCR als Indexregister verwendet wird, werden derartige neue Befehle auf wirksame Weise durchgeführt. Veiter
ist es möglich, durch die Änderung von OPER (Hinweis auf eine andere Tabelle) je Programm einen anderen Befehls-]Q
vorrat zuzuführen, wobei die Sprache berücksichtigt ist, in der das Programm geschrieben ist (eine Pascalmaschine
für Pascal, eine Cobolmaschine für Cobol.)
Der Stellendeskriptor eines Befehls mit virtuellem Opcode enthält Information, die in einer Befehlsfolge verj5
arbeitet wird. Die Verarbeitung dieser Information ist auf vielerlei Weisen möglich und wird vollständig durch
die Befehle aus der erwähnten Folge bestimmt. Die Befehle aus dieser Folge sind meistens Befehle mit einem normalen
Opcode. Jedoch ist es auch möglich, hier Befehle mit virtuellen Opcodes zu verwenden. In diesem Fall muss jedoch
zunächst der Inhalt des IPCR-Registers auf einem Stapel
im Speicher angeordnet werden.
In Fig. 7 ist ein zweites Computerprogramm dargestellt,
mit dem ein zweites Ausführungsbeispiel eines er— findungsgemässen Verfahrens erläutert wird. Das zweite
Programm kann nur durch eine Computeranlage mit einer Registerarchitektur nach Fig. 6 ausgeführt werden, weil die
Durchführung des zweiten Programms ein Register VIR (B) erfordert
.
Die Durchführung des zweiten Programms ähnelt stark der Durchführung des ersten Programms (Fig. 2) und
deshalb wird nur der Unterschied mit dem ersten Programm beschrieben. Da sich die in Fig. 6 dargestellte Registerarchitektur
von der Architektur in Fig. 1 unterscheidet,
müssen einige Befehle angepasst werden. So ist beispielsweise das Register SPR nicht mehr mit D, sondern mit E
bezeichnet und ändert sich der Befehl an der Speicherstelle O jetzt von FAE^7FFF nach FAD7FFF. Da diese Anpassungen
PHN 10 909 S6 20.12.1984
einfach erkennbar sind, werden sie weiter nicht erläutert.
Fig. 8 zeigt das Ergebnis der Durchführung des in Fig. 7 dargestellten zweiten Computerprogramms. In
diesem Ausführungsbeispiel sind die Register R8 und R9
jeweils mit dem Wert "00000000" geladen. Die Auswirkung der ersten 6 Befehle zeigt keinen Unterschied mit der
Auswirkung des ersten Computerprogramms. Beim 7»Befehl mit
dem virtuellen Opcode OO6OO2O; ADDSTACK #20 werden folgende
Operationen durchgeführt:
a) reg [IPCR^ : = reg CpCrI
b) reg £PCR"3 : = mem [reg foPER^ + OPCODE^
c) reg LVlRl : = fl.R.^
Anwendung dieser Operationen bei diesem 7. Befehl ergibt: a) reg [iPCR^] : = 00000005
b) reg [PCRl : = mem £ 7F00 + 00^]
reg £PCRl : = 00001000
c) reg tVIR3 : = OOO6OO2O
c) reg tVIR3 : = OOO6OO2O
Der Unterschied mit der Ausarbeitung des ersten Programms besteht darin, dass in das Register VIR zumindest der
Stellendeskriptorteil des Inhalts des Befehlsregisters
geladen wird. In diesem Befehlsregister befand sich der Befehl mit virtuellem Opcode, der bearbeitet wird.
Der achte Befehl an der Speicherstelle mit der Adresse 1000 lautet:
FA027FFF; LOADVALRO, -1 + +^7D
Dieser Befehl ist gleich dem achten Befehl des ersten Programms.
Der an der Speicherstelle 1001 gespeicherte Befehl lautet:
FAIFBOOO; LOADVAL RI , ^VIR
Im Stellendeskriptor "FBOOO" zeigt der Buchstabe "F" darauf, dass es sich hier um eine Bewertungsoperation handelt
(Fig. 5f). Dieser Befehl betrifft also "In das Register R1 die Bedeutung des Stellendeskriptors des Befehls laden,
der in das Register B (VIR) geladen ist". Im Register VIR befindet sich jetzt der Stellendeskriptor 60020. Die Auswertung
dieses Stellendeskriptors ergibt die Zahl 20. Dadurch wird jetzt in das Register R1 das Vort "00000020"
PHN 10 909 -27 20.12.1984
geschrieben. Das Ergebnis des neunten Befehls ist also gleich dem Ergebnis des zehnten Befehls des ersten Programms
nach Fig. 2. Der Unterschied zwischen diesem ersten und dem zweiten Computerprogramm und somit zwischen den beiden
(Fig. 1, Fig. 6) Registerarchitekturen ist also, dass durch die Verwendung des Registers VIR ein Befehl erspart werden
kann (d.h. der Befehl LOADVAL R1,-1+ LlPCR^l). Das Ergebnis
dieses Befehls (LOADVAL R1.-1+ ClPCR "3 ) wird unter Verwendung
der zweiten Registerarchitektur (Fig. 6) bereits bei der Decodierung eines Befehls mit virtuellem Opcode
(reg VIR: = £l.R."3 ) erhalten.
Zur Veranschaulichung ist noch in Fig. 8 die weitere Ausarbeitung des zweiten Computerprogramms nach
Fig. 7 dargestellt. Der Verlauf dieser Ausarbeitung darf bei gegebener Analogie mit dem ersten Computerprogramm
als klar angenommen werden.
- Leerseite
Claims (1)
- PATENTAN SPRUCHE1. Verfahren zur Bearbeitung maschinencodierter Befehlswörter mit einem Datenprozessor mit einem Speicher zum Einschreiben der Befehlswörter, die je einen Opcodeteil und zumindest einen Operanden-Deskriptorteil enthalten, wobei diese Opcodeteile zu einem endlichen Vorrat gehören der in eine erste und in eine zweite Klasse unterteilt ist, welches Verfahren folgende Schritte enthält:a) Aufrufen eines von einem Programmzählerstand angezeigten ersten Befehlswortes unter der Steuerung des Daten-Prozessors,b) Decodierung des Opcodeteils aus dem ersten Befehlswortund Feststellung der Klasse, zu der der Opcodeteil des _ ersten Befehlswortes gehört; \(el) Durchführung der vom ersten Befehlswort angegebenen > Operationen für Befehlswörter mit einem zur ersten Klasse gehörenden Opcodeteil,(c2) Durchführung folgender Schritte für Befehlswörter mit einem zur zweiten Klasse gehörenden Opcodeteil; (c2-i) Speicherung des momentanen Programmzählerstandes in ein dazu belegtes Ergänzungs-Programmzählerre-gister,(c2-2) Erzeugung einer Speicheradresse auf der Basis des Opcodeteils aus dem ersten Befehlswort, wobei an dieser Speicheradresse ein zweites Befehlswort angeordnet ist, das den Anfangsbefehl einer Folge von Befehlswörtern ist, die die Bedeutung des ersten Befehlswortes bestimmen,
(c2-3) Einstellung des momentanen Programmzählerstandes auf die Speicheradresse,
(c2-4) Bearbeitung der Befehlsfolge;(c2-5) Einstellung des momentanen Programmzählerstandes 'auf einen von dem im Ergänzungs-Programmzähler- jregister vorhandenen Programmzählerstand bestimmten .JJPHN 10 909 &ί 20.12.1984Wert, dadurch gekennzeichnet, dass bei der erwähnten Folge von Befehlswörtern von zumindest einem dritten Befehlswortder Operanden-Deskriptorteil aus dem ersten Befehlswort in ein erstes Indexregister geladen wird.δ 2. Verfahren zur Bearbeitung maschinencodierter Befehlswörter mit einem Datenprozessor mit einem Speicher zum Einschreiben der Befehlswörter, die je einen Opcodeteil und zumindest einen Operanden-Deskriptorteil enthalten, wobei diese Opcodeteile zu einem endlichen Vorrat gehören, W der in eine erste und in eine zweite Klasse unterteilt ist, welches Verfahren folgende Schritte enthält:(a) Aufrufen eines von einem Programmzählerstand angezeigten ersten Befehlswortes unter der Steuerung des Datenprozessors,(b) Decodierung des Opcodeteils aus dem ersten Befehlswort und Feststellung der Klasse, zu der der Opcodeteil des ersten Befehlswortes gehört; (c1)Durchführung der vom ersten Befehlswort angegebenen Operationen für Befehlswörter mit einem zur ersten Klasse gehörenden Opcodeteil,(c2)Durchführung folgender Schritte für Befehlswörter miteinem zur zweiten Klasse gehörenden Opcodeteil: (c2-i) Speicherung des momentanen Programmzählerstandes in ein dazu belegtes Ergänzungs-Programmzählerregister, (c2-2) Erzeugung einer Speicheradresse auf der Basis des Opcodeteils aus dem ersten Befehlswort, wobei an dieser Speicheradresse ein zweites Befehlswort angeordnet ist, das den Anfangsbefehl einer Folge von Befehlswörtern ist, die die Bedeutung des ersten Befehlswortes bestimmen,(c2-3) Einstellung des momentanen Programmzählerstandesauf die Speicheradresse,
(c2-4) Bearbeitung der Befehlsfolge,(c2-5) Einstellung des momentanen Programmzählerstandes * auf einen von dem im Ergänzungs-Programmzählerregister vorhandenen Programmzählerstand bestimmtenWert,
dadurch gekennzeichnet, dass für Befehlswörter mit einemPHN 10 909 %& 2Oi12.1984zur zweiten Klasse gehörenden Opcodeteil zumindest der Operanden-Deskriptorteil des ersten Befehlswortes in ein dazu belegtes zweites Indexregister geladen wird, bevor der Programmzählerstand auf die Speicheradresse eingestellt wird.3· Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass bei der Durchführung des dritten Befehlswortes der Inhalt des Ergänzungs-Programmzählerregisters zur Ortung des Operanden-Deskriptorteils aus dem ersten Befehlswort im Speicher benutzt wird.h. Verfahren nach Anspruch 1, 2 oder 3, dadurch gekennzeichnet, dass bei der Folge von Befehlswörtern zumindest ein viertes Befehlswort den Operanden—Deskriptorteil aus dem ersten Befehlswort verarbeitet.5· Verfahren nach einem der vorangehenden Ansprüche, dadurch gekennzeichnet, dass die Erzeugung der Speicheradresse für das zweite Befehlswort mit folgenden Unterschritten erfolgt:(1) Bildung einer Tabellenadresse aus einer Speichertabelle durch die Addierung eines Wertes beim Opcodeteil des ersten Befehlswortes, wobei dieser Wert in ein dazu belegtes Operationserweiterungsregister vorgespeichert ist,(2) Adressierung eines auf der gebildeten Tabellenadresse angeordneten Speicherworts,(3) Aufrufen des Speicherworts an der Tabellenadresse wobei das Speicherwort die Speicheradresse bildet.6. Datenprozessor mit einem Speicher zum Einschreiben maschinencodierter Befehlswörter, die je einen Opcodeteil und zumindest einen Operanden-Deskriptorteil enthalten, wobei diese Opcodeteile zu einem endlichen Vorrat gehören, der in eine erste und eine zweite Klasse unterteilt ist, und der Datenprozessor weiter ein Programmzählerregister einen Adressgeber und einen Opcodedecoder enthält, der mit ersten Mitteln zum getrennten Erkennen von Opcodeteilen der ersten und zweiten Klasse und mit zweiten Mitteln zum Erzeugen eines Steuersignals unter der Steuerung eines erkannten Opcodewortes der zweiten Klasse versehen ist,PHN 10 909 3+- 20.12.19£ί*und der Datenprozessor weiter ein Ergänzungs-Programmzählerregister und Übertragungsmittel enthält, die einen ersten Steuereingang zum Empfangen des Steuersignals aufweisen und weiter dazu vorgesehen sind, unter der Steuerung eines empfangenen Steuersignals den Inhalt des Programmzählerregisters auf das Ergänzungs-Programmzählerregister zu übertragen, und wobei der Adressengeber dazu vorgesehen ist, unter der Steuerung des Steuersignals eine Speicheradresse zu erzeugen, an der ein Anfangsbefehlswort einer Folge von Befehlswörtern zur Bearbeitung eines Deskriptorteils angeordnet ist, dadurch gekennzeichnet, dass der Datenprozessor mit einem Operationserweiterungsregister ausgerüstet ist, das einen zweiten Steuereingang zum Empfangen des Steuersignals und einen Ausgang in Verbindung mit dem Adressgenerator enthält.7. Datenprozessor nach Anspruch 6, dadurch gekennzeichnet, dass der Datenprozessor weiter ein zweites Indexregister enthält, das einen dritten Steuereingang zum Empfangen des Steuersignals und einen Dateneingang in Verbindung mit dem Speicher zum Empfangen des Operanden-Deskriptorteils eines Befehlswortes unter der Steuerung des Steuersignals enthält.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NL8400129A NL8400129A (nl) | 1984-01-16 | 1984-01-16 | Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze. |
NL8403628A NL8403628A (nl) | 1984-11-29 | 1984-11-29 | Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze. |
Publications (1)
Publication Number | Publication Date |
---|---|
DE3500377A1 true DE3500377A1 (de) | 1985-07-25 |
Family
ID=26645921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19853500377 Withdrawn DE3500377A1 (de) | 1984-01-16 | 1985-01-08 | Verfahren zur bearbeitung maschinencodierter befehlswoerter und datenprozessor durch durchfuehrung des verfahrens |
Country Status (5)
Country | Link |
---|---|
CA (1) | CA1232075A (de) |
DE (1) | DE3500377A1 (de) |
FR (1) | FR2573228A1 (de) |
GB (1) | GB2153561B (de) |
SE (1) | SE8500156L (de) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3685117D1 (de) * | 1986-12-30 | 1992-06-04 | Ibm | Einrichtung und verfahren zur erweiterung des befehlssatzes und der funktionen eines rechners. |
US7624374B2 (en) | 2005-08-30 | 2009-11-24 | Microsoft Corporation | Readers and scanner design pattern |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5931734B2 (ja) * | 1977-10-25 | 1984-08-03 | デイジタル イクイプメント コ−ポレ−シヨン | 特別のオペランド指定子を持つた命令を実行する中央処理装置 |
US4293907A (en) * | 1978-12-29 | 1981-10-06 | Bell Telephone Laboratories, Incorporated | Data processing apparatus having op-code extension register |
-
1985
- 1985-01-08 DE DE19853500377 patent/DE3500377A1/de not_active Withdrawn
- 1985-01-10 CA CA000471845A patent/CA1232075A/en not_active Expired
- 1985-01-11 GB GB08500682A patent/GB2153561B/en not_active Expired
- 1985-01-14 SE SE8500156A patent/SE8500156L/xx not_active Application Discontinuation
- 1985-01-15 FR FR8500513A patent/FR2573228A1/fr not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
FR2573228A1 (fr) | 1986-05-16 |
SE8500156D0 (sv) | 1985-01-14 |
CA1232075A (en) | 1988-01-26 |
GB2153561B (en) | 1987-06-17 |
GB8500682D0 (en) | 1985-02-13 |
SE8500156L (sv) | 1985-07-17 |
GB2153561A (en) | 1985-08-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3788877T2 (de) | Einrichtung zur software-emulation. | |
DE3855158T2 (de) | Dekodier-verfahren und -system für Befehle mit verschiedenen unvereinbaren Formaten | |
DE3750951T2 (de) | Verfahren zur Kodeerzeugung für Rechner mit beschränktem Befehlssatz. | |
DE3751540T2 (de) | Verfahren und Vorrichtung zur Datenverarbeitung. | |
DE2715073C3 (de) | Mikroprogrammierte Rechner-Steuervorrichtung | |
DE68916853T2 (de) | Unabhängige Programmlader für virtuelle Maschinenarchitektur. | |
WO1994022079A1 (de) | Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren | |
DE2630323B2 (de) | Datenspeichereinrichtung mit einem Hauptspeicher, einem Hilfsspeicher und einer Vorausschaulogik | |
DE3131204A1 (de) | Adressumrechnungs- und generatoranordnung | |
DE69133571T2 (de) | Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen | |
DE2318069A1 (de) | Rechnersteuersystem unter verwendung von mikroprogrammierung und statisch/dynamischer erweiterung von steuerfunktionen mittels festverdrahteter logischer matrix | |
DE3856139T2 (de) | Mikroprozessor | |
DE69233282T2 (de) | Datenverarbeitungsvorrichtung | |
DE2548720C2 (de) | Mikroprogramm-Steuerwerk | |
DE2134816A1 (de) | Einrichtung zur adressenuebersetzung | |
DE68925376T2 (de) | In Direktabbildung und in Bankabbildung wirksamer Informationsprozessor und Verfahren zum Schalten der Abbildungsschemas | |
DE69503010T2 (de) | Mikroprozessor zur Ausführung von Befehlen,von denen ein Teil des Operandfelds als Operationscode zu gebrauchen ist | |
DE69229424T2 (de) | Adressengeneration in einer Datenverarbeitungseinheit | |
DE3852432T2 (de) | Befehlssteuerungsvorrichtung für ein Computersystem. | |
DE2245284A1 (de) | Datenverarbeitungsanlage | |
DE2403039C2 (de) | Einrichtung zur Befehlsausführung in einer adressenerweiterten elektronischen Datenverarbeitungsanlage | |
DE3500377A1 (de) | Verfahren zur bearbeitung maschinencodierter befehlswoerter und datenprozessor durch durchfuehrung des verfahrens | |
DE3887717T2 (de) | Prozessor für programmierbaren logischen regler und programmierbarer logischer regler. | |
DE2419836C3 (de) | Schaltungsanordnung zur Durchführung von Unterprogramm-Sprungbefehlen in Datenverarbeitungsanlagen | |
DE3687116T2 (de) | Adressengenerationssystem. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8130 | Withdrawal |