NL8403628A - Processing of machine code instructions - using instructions with two part operation code, first being of normal structure and second acting as virtual operation code - Google Patents

Processing of machine code instructions - using instructions with two part operation code, first being of normal structure and second acting as virtual operation code Download PDF

Info

Publication number
NL8403628A
NL8403628A NL8403628A NL8403628A NL8403628A NL 8403628 A NL8403628 A NL 8403628A NL 8403628 A NL8403628 A NL 8403628A NL 8403628 A NL8403628 A NL 8403628A NL 8403628 A NL8403628 A NL 8403628A
Authority
NL
Netherlands
Prior art keywords
instruction
register
reg
instruction word
program counter
Prior art date
Application number
NL8403628A
Other languages
Dutch (nl)
Original Assignee
Philips Nv
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Philips Nv filed Critical Philips Nv
Priority to NL8403628A priority Critical patent/NL8403628A/en
Priority to DE19853500377 priority patent/DE3500377A1/en
Priority to CA000471845A priority patent/CA1232075A/en
Priority to GB08500682A priority patent/GB2153561B/en
Priority to SE8500156A priority patent/SE8500156L/en
Priority to FR8500513A priority patent/FR2573228A1/en
Publication of NL8403628A publication Critical patent/NL8403628A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields

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)

Abstract

A data processing system is structured to enable machine code instructions to be readily generated when operating with either of two types of languages, i.e. high level languages or reduced instruction set languages. The central processor operates together with a specific register format consisting of general registers (RO-R7), a zero's register (8), a one's register (9), a program counter (PCR), a stack pointer register (SPR), a condition code register (CCR), and a sign extend register (SER). In addition to the standard registers there are an interpreter programme counter register (IPLR) and an operation extend register (OPER) that provide the necessary facilities for machine code conversion. The instruction words used in the system consist of an operation code and an operand. The operation code is in two part format, with the first part being of a normal structure and the second part acting as a virtual operation code to facilitate the conversion.

Description

* -. s PHN 11.228 1 N.V. Philips' Gloeilampenfabrieken te Eindhoven* -. s PHN 11.228 1 N.V. Philips' Incandescent lamp factories in Eindhoven

Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze.Method for handling machine-coded instruction words, and data processor for performing the method.

De uitvinding heeft betrekking op een werkwijze voor het behandelen van machine gecodeerde instruktiewoorden door middel van een dataprocessor voorzien van een geheugen voor het opslaan van genoemde instruktiewoorden die elk een opcodedeel en ten minste één 5 operanddescriptordeel bevatten, welke opcodedelen behoren tot een eindige verzameling die in een eerste en een tweede klasse is onderverdeeld, welke werkwijze de volgende stappen bevat: (a) qphalen onder besturing van de dataprocessor van een door een programmatellerstand aangewezen eerste instruktiewoord; 10 (b) decoderen van het opcodedeel uit het eerste instruktiewoord en onderzoeken tot dewelke der klassen het opcodedeel van het eerste instruktiewoord behoort; (c1) uitvoeren van de door het eerste instruktiewoord gegeven operaties voor instruktiewoorden met een opcodedeel behorende tot de eerste 15 klasse; (c2) voor instruktiewoorden met een opcodedeel behorende tot de tweede klasse uitvoeren de volgende stappen: (c2-1) opslaan van de momentane programmatellerstand in een daar-' toe voorbehouden supplementair programmatellerregister; 20 (c2-2) genereren, op basis van het opcodedeel uit het eerste instruktiewoord, van een geheugenadres op hetwelk een tweede instruktiewoord is gelocaliseerd, welk tweede instruktiewoord de begininstruktie is van een reeks instruktiewoorden die de betekenis van het eerste instruktiewoord 25 bepalen; (c2-3) stellen van de momentane programmatellerstand op genoemd geheugenadres; (c2-4) behandelen van genoemde reeks instrukties; (c2-5) stellen van de momentane programnatellerstand op een waarde 30 bepaald door de in het supplementair programmatellerregister aanwezige programmatellerstand.The invention relates to a method for treating machine-coded instruction words by means of a data processor provided with a memory for storing said instruction words, each of which contains a code part and at least one operand descriptor part, which code parts belong to a finite set which are a first and a second class is divided, the method comprising the following steps: (a) retrieving under the control of the data processor a first instruction word indicated by a program counter; (B) decoding the code part of the first instruction word and examining to which of the classes the code part of the first instruction word belongs; (c1) performing the instruction word operations given by the first instruction word with a code part belonging to the first class; (c2) for instruction words with a code part belonging to the second class, perform the following steps: (c2-1) storing the current program counter in a dedicated program counter register reserved therefor; 20 (c2-2), based on the coding portion from the first instruction word, generating a memory address to which a second instruction word is located, the second instruction word being the initial instruction of a series of instruction words determining the meaning of the first instruction word 25; (c2-3) setting the current program counter to said memory address; (c2-4) treating said set of instructions; (c2-5) setting the current program counter to a value 30 determined by the program counter contained in the additional program counter register.

Een dergelijke werkwijze is bekend uit het artikel "Instruction set extension" van R.L. Bains, R.L. Hoffman,.. G.R. Mitchell en o V V» y £. c? *, * PHN 11.228 2 F.G. Soltis, verschenen in I.B.M. Technical Disclosure Bulletin, Vol. 18, No. 7, december 1975 pagina's 2250-2252. Bij de bekende werkwijze zijn de machine gecodeerde instruktiewoorden het resultaat van vertalings-procedures die zijn toegepast op een door een programmeur aangeboden 5 programmatekst. De programmatekst is geschreven in een bekende computertaal zoals bijvoorbeeld PASCAL of FORTRAN. De compiler en de assembler van de dataprocessor (ook wel computersysteem genaamd) vertalen de programmatekst naar een stelsel van machine gecodeerde instruktiewoorden die dan tijdens de behandeling van de programmatekst in het geheugen 10 worden opgeslagen. Een instruktiewoord is bijvoorbeeld 32 bits breed. Hiervan zijn dan bijvoorbeeld 8 bits bestemd voor het opcodedeel en 20 bits voor het operanddescriptordeel. Bij een 8 bits breed opcodedeelSuch a method is known from the article "Instruction set extension" by R.L. Bains, R.L. Hoffman, .. G.R. Mitchell and o V V »y £. c? *, * PHN 11.228 2 F.G. Soltis, published in I.B.M. Technical Disclosure Bulletin, Vol. 18, no. 7, December 1975, pages 2250-2252. In the known method, machine-coded instruction words are the result of translation procedures applied to a program text presented by a programmer. The program text is written in a well-known computer language such as PASCAL or FORTRAN. The compiler and the assembler of the data processor (also called computer system) translate the program text into a system of machine-coded instruction words which are then stored in memory 10 during the processing of the program text. For example, an instruction word is 32 bits wide. Of these, for example, 8 bits are intended for the code part and 20 bits for the operand descriptor part. With an 8 bit wide code section

OO

bevat een verzameling van opcodes maximaal (2 =) 256 verschillende opcodes. Deze verzameling is bij de bekende werkwijze in twee klassen 15 onderverdeeld, namelijk de geldige (eerste klasse) en de ongeldige (tweede klasse) opcodes. De inhoud van het opcodedeel is bepalend voor de aard van de te verrichten operatie (s) voor het af handelen van de instruktie. Zo kan een opcode bijvoorbeeld een registerladingsoperatie of een sprong naar een subroutine aanduiden. Het decoderen heeft tot 20 doel het opcodedeel in stuur informatie voor het computer systeem om te zetten. De volgorde waarin de instruktiewoorden door de dataprocessor uit het geheugen worden opgehaald en behandeld wordt aangeduid door de programmatellerstand.contains a collection of opcodes maximum (2 =) 256 different opcodes. In the known method, this set is divided into two classes, namely the valid (first class) and the invalid (second class) opcodes. The content of the code section determines the nature of the operation (s) to be performed for handling the instruction. For example, an opcode may indicate a register loading operation or a jump to a subroutine. The purpose of decoding is to convert the code part into control information for the computer system. The order in which the instruction words are retrieved from memory and processed by the data processor is indicated by the program counter.

Bij de bekende werkwijze hebben de geldige opcodedelen uit 25 genoemde verzameling een vaste betekenis die bij het decoderen wordt herkend. Een opcodedeel met vaste betekenis wordt na het decoderen op de bekende manier uitgevoerd. Afhankelijk van de capaciteit van het computersysteem bevat de verzameling opcodes veel of weinig verschillende elementen. De. systeemprogrammeur moet werken met de gegeven 30 verzameling van opcodes en de vaste betekenis die het computersysteem tijdens het decoderen daaraan geeft. De bekende werkwijze geeft een oplossing voor het behandelen van instruktiewoorden met een ongeldige opcode (tweede klasse). Wanneer een ongeldige opcode wordt gedecodeerd dan wordt de momentane programmatellerstand in een supplementair 35 programmatellerregister opgeslagen en er wordt op basis van het opcodedeel uit het eerste instruktiewoord een geheugenadres gevormd. Dat geheugenadres wordt onder neer gevormd door in een schuifregister de meest significante bits nul te maken en voor de minst significante bits S A A 1 Η 9 A 'Q *ΐ b ν ν d ΛIn the known method, the valid code parts from said set have a fixed meaning which is recognized during decoding. A code part with a fixed meaning is executed in the known manner after decoding. Depending on the capacity of the computer system, the opcode set contains many or few different elements. The. system programmer must work with the given set of opcodes and the fixed meaning given by the computer system during decoding. The known method provides a solution for treating instruction words with an invalid opcode (second class). When an invalid opcode is decoded, the current program counter is stored in a supplementary program counter register and a memory address is formed on the basis of the code part from the first instruction word. That memory address is formed down by making the most significant bits zero in a shift register and for the least significant bits S A A 1 Η 9 A 'Q * ΐ b ν ν d Λ

* * I* * I

ΕΗΝ 11.228 3 van het geheugenadres de opcode te gebruiken. Opdat geheugenadres is een tweede instruktiewoord gelocaliseerd welke de begininstruktie is van een reeks instruktiewoorden die de betekenis van het eerste instruktie-woord bepalen. Zodoende wordt een instruktiewoord met een ongeldig 5 opcodedeel in een uitvoerbare instruktie vertaald..2 11.228 3 of the memory address to use the opcode. In order that memory address, a second instruction word is located which is the initial instruction of a series of instruction words determining the meaning of the first instruction word. Thus, an instruction word with an invalid code portion is translated into an executable instruction.

Een nadeel van de bekende werkwijze is dat bij instructiewoorden die een opcodedeel bevatten dat tot de tweede klasse behoort (ongeldige opcode) er bij het vertalen naar een uitvoerbare instruktie en het uitvoeren daarvan geen rekening wordt gehouden met het operand-10 descriptordeel van het betreffende instruktiewoord. Hierdoor wordt het operanddescriptordeel van zo’n instruktiewoord op inefficiënte manier benut en dus ook het computersysteem.A drawback of the known method is that with instruction words containing a code part that belongs to the second class (invalid opcode), the operand-10 descriptor part of the relevant instruction word is not taken into account when translating it into an executable instruction and executing it. . As a result, the operand descriptor part of such an instruction word is used inefficiently and thus also the computer system.

De uitvinding beoogt een werkwijze voor het behandelen van machine gecodeerde instruktiewoorden te realiseren, waarbij het operand-15 descriptordeel van het instruktiewoord met een opcodedeel behorende tot de tweede klasse voor codering van operanddescriptoren beschikbaar is en waarbij zodoende aan de systeenprogrammeur de vrijheid wordt geboden voor de keuze van de betekenis van de opcodedelen van de tweede klasse. Verder beoogt de uitvinding een werkwijze te realiseren waarbij 20 ook voor hogere programmeertalen een hogere efficiëntie wordt verkregen.The object of the invention is to realize a method for treating machine-coded instruction words, wherein the operand descriptor part of the instruction word with a coding part belonging to the second class for coding operand descriptors is available, and in this way the system programmer is given the freedom for the choice of the meaning of the code parts of the second class. Another object of the invention is to realize a method in which a higher efficiency is also obtained for higher programming languages.

Een werkwijze volgens de uitvinding heeft daartoe het kenmerk, dat bij genoeirde reeks van instruktiewoorden door ten minste één derde instruktiewoord het operanddescriptordeel uit het eerste instruktiewoord in een eerste indexregister wordt geladen.To this end, a method according to the invention is characterized in that in the case of a compelling series of instruction words the operand descriptor part is loaded from the first instruction word into a first index register by at least one third instruction word.

25 Het laden van het operanddescriptordeel in een eerste indexregister maakt het verwerken van de operanddescriptor mogelijk en maakt dus ook de operanddescriptoren voor codering beschikbaar. Door bovendien een indexregister te gebruiken, wordt de bestaande hardware voor het decoderen van de operanddescriptor gebruikt. De systeemprogrammeur heeft 3Q nu de mogelijkheid om te verwerken informatie in het descriptordeel pp te slaan, welke informatie dan door genoeirde reeks van instruktiewoorden wordt verwerkt.Loading the operand descriptor part into a first index register allows the processing of the operand descriptor and thus also makes the operand descriptors available for encoding. In addition, by using an index register, the existing hardware is used to decode the operand descriptor. The system programmer now has 3Q the ability to store information to be processed in the descriptor part pp, which information is then processed by compliant sequence of instruction words.

In een alternatieve uitvoeringsvorm heeft een werkwijze volgens de uitvinding het kenmerk, dat voor instruktiewoorden met een opcode-35 deel behorende tot de tweede klasse, ten minste het operanddescriptordeel van het eerste instruktiewoord in een daartoe voorbehouden tweede programrratellerstand op indexregister wordt geladen alvorens het stellen van de/het geheugenadres. Door de operanddescriptor in een tweede indexregister te laden alvorensIn an alternative embodiment, a method according to the invention is characterized in that for instruction words with an opcode-35 part belonging to the second class, at least the operand descriptor part of the first instruction word is loaded into an index register reserved for that purpose before the setting of the memory address. By loading the operand descriptor into a second index register before

A ?, ' - ^ O QA?, '- ^ O Q

e 3e 3

•N• N

PHN 11.228 4 het geheugenadres te genereren, kunnen programma-instrukties uit genoemde reeks instruktiewoorden worden gespaard.PHN 11.228 4 to generate the memory address, program instructions from said series of instruction words can be saved.

Een eerste voorkeursuitvoeringsvorm van een werkwijze volgens de uitvinding heeft het kenmerk, dat bij de uitvoering van het derde 5 instruktiewoord de inhoud van het supplementair pr ogr ammatellerr eg is ter wordt gebruikt voor het localiseren in het geheugen van het operand-descriptordeel uit het eerste instruktiewoord.A first preferred embodiment of a method according to the invention is characterized in that in the execution of the third instruction word the content of the supplementary pr ogr ammatellerreg is used for locating in the memory of the operand descriptor part from the first instruction word .

Doordat in het supplementair programmatellerregister de momentane programmatellerstand is opgeslagen, kan op die manier snel en eenvoudig 10 worden gelocaliseerd op welke plaats in het geheugen de operanddescriptor van het eerste instruktiewoord zich bevindt. Immers de operanddescriptor bevindt zich in het operanddescriptor deel van dat eerste instruktiewoord dat door de programmatellerstand werd aangewezen bij het ophalen onder stap (a) van de werkwijze volgens de uitvinding.Because the current program counter is stored in the supplementary program counter register, it is thus possible to locate quickly and simply where the operand descriptor of the first instruction word is located in the memory. After all, the operand descriptor is located in the operand descriptor part of that first instruction word indicated by the program counter when retrieving under step (a) of the method according to the invention.

15 Een tweede voorkeursuitvoeringsvorm van een werkwijze volgens de uitvinding heeft het kenmerk, dat bij genoemde reeks van instruktie-woorden door ten minste één vierde instruktiewoord het operanddescriptor-deel uit het eerste instruktiewoord wordt verwerkt. De operanddescriptor van het eerste instruktiewoord die is opgeslagen in een indexregister 20 wordt door middel van het vierde instruktiewoord behandeld. Het descrip-tordeel van een instruktiewoord met opcodedeel behorende tot de tweede klasse wordt aldus gebruikt voor de codering van operanddescriptoren.A second preferred embodiment of a method according to the invention is characterized in that in said series of instruction words, the operand descriptor part from the first instruction word is processed by at least one fourth instruction word. The operand descriptor of the first instruction word stored in an index register 20 is treated by the fourth instruction word. The descriptor part of an instruction word with a coding part belonging to the second class is thus used for the coding of operand descriptors.

Een verdere voorkeursuitvoeringsvorm van een werkwijze volgens de uitvinding heeft het kenmerk, dat het genereren van het geheugenadres 25 voor het tweede instruktiewoord de volgende substappen bevat: (1) vormen van een tabeladres uit een geheugentabel door het bij het opcodedeel van het eerste instruktiewoord optellen van een waarde welke vooraf is opgeslagen in een daartoe voorbehouden operatie-extensieregister; 30 (2) adresseren van het geheugenwoord gelocalisèerd op het gevormde tabeladres; (3) ophalen van het geheugenwoord op genoemde tabeladres, welk geheugenwoord het geheugenadres vormt.A further preferred embodiment of a method according to the invention is characterized in that the generation of the memory address 25 for the second instruction word comprises the following sub-steps: (1) forming a table address from a memory table by adding to the coding part of the first instruction word a value previously stored in a dedicated operation extension register; (2) addressing the memory word located at the generated table address; (3) retrieving the memory word at said table address, which memory word constitutes the memory address.

Het gebruik van een geheugentabel biedt de mogelijkheid om een inven-35 tarisatie te maken van gespecialiseerde instruktieverzamelingen waarmee instruktiewoorden, die een opcodedeel behorende tot de tweede klasse bevatten, worden behandeld.The use of a memory table offers the possibility to make an inventory of specialized instruction collections with which instruction words, which contain a code part belonging to the second class, are treated.

De uitvinding heeft ook betrekking op een dataprocessor voor-The invention also relates to a data processor for

a Π " > 9 Qa Π "> 9 Q

* £ fi PHN 11.228 5 s zien van een geheugen voor het opslaan van machine gecodeerde instruktie-woorden, die elk een opcodedeel en een descriptordeel bevatten, welke opcodedelen behoren tot een eindige verzameling die in een eerste en een tweede klasse is onderverdeeld, welke dataprocessor verder een 5 progr ammatellerr egister, een adresgenerator en een opcodedecodeur bevat, welke opcodedecodeur van eerste middelen is voorzien op opcodedelen van de eerste en tweede klasse afzonderlijk te herkennen en van tweede middelen voor het onder controle van een herkend opcodewoord van de tweede klasse een stuursignaal te genereren, welke dataprocessor verder 10 een supplementair programmatellerregister en overdrschtsmiddelen bevat, welke overdrachtsmiddelen een eerste stuur ingang hebben voor het ontvangen van het stuursignaal en verder voorzien zijn voor het onder besturing van een ontvangen stuursignaal overbrengen van de inhoud van het programnatellerregister naar het supplementair programmatellerre-15 gister, en waarbij de adresgenerator voorzien is voor het onder controle van het stuursignaal genereren van een geheugenadres op hetwelk een begininstruktiewoord van een reeks instruktiewoorden voor het behandelen van een descriptordeel is gelocaliseerd.See a memory for storing machine-coded instruction words, each containing a coding part and a descriptor part, which coding parts belong to a finite set divided into a first and a second class, which data processor further comprising a program counter, an address generator and a coding decoder, which coding decoder is provided with first means on coding parts of the first and second class separately recognizable and with second means for controlling a recognized coding word of the second class with a control signal. which data processor further comprises a supplementary program counter register and transfer means, which transfer means have a first control input for receiving the control signal and are further provided for transferring the contents of the program counter register to the supplementary program under control of a received control signal. yesterday, and wherein the address generator is provided for generating, under control of the control signal, a memory address at which an initial instruction word of a series of instruction words for treating a descriptor portion is located.

Zo’n dataprocessor is eveneens bekend uit het reeds genoemde 20 artikel "Instruction set extension".Such a data processor is also known from the aforementioned article "Instruction set extension".

Een dataprocessor volgens de uitvinding heeft het kenmerk, dat de dataprocessor voorzien is van een operatie-extensieregister dat een tweede stuur ingang voor het ontvangen van het stuursignaal bevat en een uitgang heeft die verbonden is net de adresgenerator.A data processor according to the invention is characterized in that the data processor is provided with an operation extension register which contains a second control input for receiving the control signal and has an output connected to the address generator.

25 Hierdoor kan op eenvoudige wijze de adresgenerator worden gerealiseerd wanneer het operatie-extensieregister een verzameling adressen of adresdelen bevat.As a result, the address generator can be realized in a simple manner if the operation extension register contains a collection of addresses or address parts.

Het is gunstig dat de dataprocessor verder voorzien is van een tweede indexregister dat een derde stuuringang voor het ontvangen 30 van het stuursignaal bevat en een data-ingang verbonden met het geheugen voor het ontvangen van het operanddescriptordeel van een instruktie-woord onder besturing van het stuursignaal.It is advantageous that the data processor further comprises a second index register which contains a third control input for receiving the control signal and a data input connected to the memory for receiving the operand descriptor part of an instruction word under the control of the control signal .

Hierdoor kunnen bovendien programma-instrukties worden gespaard.This also saves program instructions.

De uitvinding zal nader worden beschreven aan de hand van 35 de tekening waarin: figuur 1 een eerste uitvoer ingsvoorbeeld van een register-architectuur van een computersysteem volgens de uitvinding laat zien.The invention will be further described with reference to the drawing, in which: figure 1 shows a first exemplary embodiment of a register architecture of a computer system according to the invention.

Figuur 1a de werkwijze volgens de uitvinding schematisch e'4C.' e 2e * ï PHN 11.228 6 illustreert aan de hand van een stroomdiagram.Figure 1a schematically shows the method according to the invention '4C.' e 2e * ï PHN 11.228 6 illustrates on the basis of a flow chart.

Figuur 2 een eerste computerprogramma laat zien aan de hand van hetwelke een eerste uitvoeringsvorm van de werkwijze volgens de uitvinding wordt geïllustreerd.Figure 2 shows a first computer program by means of which a first embodiment of the method according to the invention is illustrated.

g Figuur 3 (I tot en met VI) het resultaat van een afhandeling van het coirputerprogramma uit figuur 2 laat zien.g Figure 3 (I to VI) shows the result of a handling of the coirputer program from figure 2.

Figuur 4 (a tot en met f) enkele verschillende opcodes en hun bijbehorende instruktiewoordindeling laat zien, en figuur 5 (a tot en met f) enkele verschillende descriptordelen 10 binnen een instruktiewoord laat zien.Figure 4 (a through f) shows some different opcodes and their associated instruction word format, and Figure 5 (a through f) shows some different descriptor parts 10 within an instruction word.

Figuur 6 een tweede uitvoer ings voor beeld van een register-architectuur van een computersysteem volgens de uitvinding laat zien.Figure 6 shows a second embodiment of a register architecture of a computer system according to the invention.

Figuur 7 een tweede coirputerprogramma laat zien aan de hand van hetwelke een tweede uitvoeringsvorm van de werkwijze volgens de 15 uitvinding wordt geïllustreerd.Figure 7 shows a second co-computer program by means of which a second embodiment of the method according to the invention is illustrated.

Figuur 8 (I tot en net V) het resultaat van een afhandeling van het computerprogramma uit figuur 7 laat zien.Figure 8 (I to net V) shows the result of a processing of the computer program from figure 7.

Een dataverwerkend systeem of een computer die een opdracht moet verwerken, zal dit doen door het af handelen van een programma dat 20 geschikt is voor het verwerken van die opdracht. Dat programma is in een bekende programmeertaal zoals bijvoorbeeld PASCAL, FORTRAN of BASIC geschreven. Deze programmeertalen zijn echter gebruikerstalen die eerst door de computer in machine gecodeerde instrukties worden vertaald ten einde het programma te behandelen. Dat vertalen van gebruikerstaal naar 25 machine gecodeerde instrukties geschiedt meestal in twee stappen. Een eerste stap bevat het vertalen van gebruikerstaal naar "Assembly language" en een tweede stap van het vertalen van "Assembly language" naar "machine-instrukties". De eerste stap wordt door een "compiler" en de tweede door een "assembler" behandeld. De compiler en de assembler 3Q zijn beide vertaalprogramma's die deel uitmaken van het conputersysteem. De systeemprogrammeur heeft bij het maken van de compiler en de assembler rekening gehouden met de architectuur van de computer (CA = Computer Architectuur, dat wil zeggen het aanzien van de machine vanuit het gezichtspunt van de systeemprogrammeur).A data processing system or a computer that has to process an order will do this by handling a program suitable for processing that order. That program is written in a well-known programming language such as, for example, PASCAL, FORTRAN or BASIC. However, these programming languages are user languages that are first translated by machine-encoded instructions in order to handle the program. This translation from user language to 25 machine-coded instructions usually takes place in two steps. A first step involves translating user language into "Assembly language" and a second step of translating "Assembly language" into "machine instructions". The first step is handled by a "compiler" and the second by an "assembler". The compiler and assembler 3Q are both translation programs that are part of the computer system. The system programmer took the architecture of the computer into account when creating the compiler and assembler (CA = Computer Architecture, ie the appearance of the machine from the point of view of the system programmer).

35 In Computer Architectuur wordt onder neer een onderscheid ge maakt tussen twee types architectuur, namelijk HLL (High Level Language) en RISC (Reduced Instruction Set Computers) architectuur. HLL-architec-tuur houdt in hoofdzaak in dat de computer hardware wordt voorzien van35 In Computer Architecture, a distinction is made below between two types of architecture, namely HLL (High Level Language) and RISC (Reduced Instruction Set Computers) architecture. HLL architecture mainly means that the computer hardware is provided with

§ λ Π Λ λ 0 O§ λ Π Λ λ 0 O

ύ -f V é» Qf -f V é »Q

' « € PHN 11.228 7 een instruktieset die geschikt is voor de verwerking van hogere talen. Hierdoor wordt de kloof tussen gebruikerstaal en machine-instrukties kleiner. RISC-architectuur houdt in hoofdzaak in dat de instrukties van de machine zodanig eenvoudig zijn dat de hardware maximale prestaties 5 kan halen. Echter is bij RISC-architectuur de vertaling van een ge-bruikersprogramma aanzienlijk noeilijker.€ PHN 11.228 7 an instruction set suitable for processing higher languages. This narrows the gap between user language and machine instructions. RISC architecture essentially means that the machine instructions are so simple that the hardware can achieve maximum performance. However, with RISC architecture, the translation of a user program is considerably more difficult.

De voordelen van deze twee genoemde types van computer architectuur worden nu gecombineerd in een dataverwerkend systeem volgens de uitvinding. Zo'n dataverwerkend systeem bevat in feite een eenvoudige 10 machine waarvan de instruktieset uitbreidbaar wordt gemaakt ten einde efficient HEL-type operaties te kunnen behandelen.The advantages of these two mentioned types of computer architecture are now combined in a data processing system according to the invention. In fact, such a data processing system includes a simple machine whose instruction set is made extensible to efficiently handle HEL-type operations.

Eten conputersysteem volgens de uitvinding bevat een centrale verwerkingseenheid (CPU), met bijvoorbeeld een registerarchitectuur.The computer system according to the invention comprises a central processing unit (CPU), with, for example, a register architecture.

Figuur 1 laat een eerste uitvoeringsvoorbeeld van een registerarchitec-15 tuur van een conputersysteem volgens de uitvinding zien. De register Rq tot en met evenals de register ZERDR(8), CNER(9), PCR (Program Counter Register) (B), SPR (Stack Pointer Register) (D), CCR (Condition Code Register) (E) en SEXR (Sign Extend Register) (F) zijn de gebruikelijke bekende registers van een computer met een conventionele register-20 architectuur. De registers IPCR (Interpreter Program Counter Register) (C) en OPER (Operation Extend Registers ) (A) vormen een toevoeging van de CPU waarmede een registerarchitectuur wordt uitgebreid voor toepassing van de uitvinding, waarbij er echter dient te worden opgemerkt dat het register OPER optioneel is. In de meest eenvoudige uitvoering kan 25 worden volstaan met het register IPCR. Het gebruik van het register IPCR door liet conputersysteem tijdens de behandeling van een programma wordt gestuurd door het OPCODEDEEL .van een te behandelen ins truktiewoord, of kortweg, de OPCODE (Operation Code) genoemd.Figure 1 shows a first exemplary embodiment of a register architecture of a computer system according to the invention. The register Rq through as well as the register ZERDR (8), CNER (9), PCR (Program Counter Register) (B), SPR (Stack Pointer Register) (D), CCR (Condition Code Register) (E) and SEXR (Sign Extend Register) (F) are the usual known registers of a computer with a conventional register-20 architecture. The registers IPCR (Interpreter Program Counter Register) (C) and OPER (Operation Extend Registers) (A) are an addition to the CPU which expands a register architecture for application of the invention, however it should be noted that the register OPER is optional. In the simplest embodiment, the register IPCR suffices. The use of the register IPCR by the computer system during the processing of a program is controlled by the OPCODE PART of an instruction word to be treated, or simply referred to as the OPCODE (Operation Code).

Figuur 6 laat een tweede uitvoeringsvoorbeeld van een register-30 architectuur van een computersysteem volgens de uitvinding zien. De registers Rq tot en met R^ evenals het register OPER en IPCR zijn identiek aan de gelijknamige registers uit het eerste uitvoeringsvoorbeeld gegeven in figuur 1. De registers (8) en (9) noemen nu Rg en Rg. De registers PCR (D), SPR (E) en CCR (E) vervullen dezelfde taak als de 35 gelijknamige registers uit het eerste uitvoeringsvoorbeeld, maar hebben nu een andere rangorde in het systeem. Nieuw voor het tweede uitvoeringsvoorbeeld is het register VIR (B) waarvan de betekenis verderop in de beschrijving zal worden toegelicht.Figure 6 shows a second exemplary embodiment of a register architecture of a computer system according to the invention. The registers Rq through Rc as well as the register OPER and IPCR are identical to the registers of the same name from the first exemplary embodiment given in figure 1. The registers (8) and (9) now call Rg and Rg. The registers PCR (D), SPR (E) and CCR (E) perform the same task as the 35 eponymous registers of the first embodiment, but now have a different order in the system. New for the second embodiment is the register VIR (B), the meaning of which will be explained later in the description.

54-..:3 28 PHN 11.228 854 - ..: 3 28 PHN 11.228 8

ï Vï V

In dit computersysteem worden de OPCODES in twee klassen onderverdeeld, namelijk een eerste klasse die "normale" opcodes bevat en een tweede klasse die "virtuele" opcodes bevat. De opcodedeccdeur van het conputersysteem is zodanig geïmplementeerd dat deze aan het 5 bitpatroon van de opcodes herkent tot welke klasse deze behoort. Zo kunnen bijvoorbeeld alle opcodes die als meest significante bits (MSB) de waarde "0" hebben als "normale" opcodes worden herkend en alle opcodes die als MSB de waarde "1" hebben als "virtuele" opcodes worden herkend. Hierdoor ontstaat een verdeling waarbij elke klasse evenveel 10 opcodes bevat. Er dient echter te worden opgemerkt dat ook elke andere verdeling mogelijk is. Bij een bepaalde verdeling behoort dan telkens een welbepaalde implementatie van de opcodedecodeur. Het zal duidelijk zijn dat elke klasse ten minste één opcode moet bevatten.In this computer system, the OPCODES are divided into two classes, namely a first class containing "normal" opcodes and a second class containing "virtual" opcodes. The code decoder of the computer system is implemented in such a way that it recognizes from the 5 bit pattern of the opcodes which class it belongs to. For example, all opcodes that have the most significant bits (MSB) of the value "0" can be recognized as "normal" opcodes and all the opcodes that have the value of "1" as MSB can be recognized as "virtual" opcodes. This creates a distribution in which each class contains the same number of 10 opcodes. However, it should be noted that any other distribution is also possible. With a certain distribution, there is always a specific implementation of the code decoder. It will be clear that each class must contain at least one opcode.

De wijze waarop instrukties met normale of met virtuele op-15 code door een conputersysteem volgens de uitvinding worden behandeld, is schematisch geïllustreerd aan de hand van het stroomdiagram van figuur 1a. Na het lezen (50) van een instruktiewoord wordt onderzocht (51) of de opcode tot de klasse der virtuele of der normale opcodes behoort.The manner in which instructions with normal or virtual op-code are handled by a computer system according to the invention is schematically illustrated with reference to the flow chart of figure 1a. After reading (50) an instruction word, it is examined (51) whether the opcode belongs to the class of the virtual or the normal opcodes.

2o In het geval dat de opcodedecodeur een opcode behorende tot de klasse van normale opcodes heeft gedecodeerd (N) dan wordt de daarbij behorende instinktie op de bekende manier behandeld (52). In het geval dat echter de opcodedecodeur een opcode behorende tot de klasse van virtuele opcodes heeft gedecodeerd (V) dan worden telkens, ongeacht de 2g inhoud van de erbij behorende instruktie, de hieronder vermelde handelingen uitgevoerd: reg [IPCR] ; = reg (PCR] (53) reg [PCR) : = mem (reg [OPER] + opcode] (54)2o In case the code decoder has decoded an opcode belonging to the class of normal opcodes (N), then the associated instinct is treated in the known manner (52). However, in the event that the code decoder has decoded an opcode belonging to the class of virtual opcodes (V), regardless of the 2g content of the associated instruction, the following operations are performed: reg [IPCR]; = reg (PCR] (53) reg [PCR): = mem (reg [OPER] + opcode] (54)

Hierbij betekent de handeling reg (IPCR] : = reg (PCRjdat de inhoud 3Q van het register PCR in het register IPCR wordt overgeschreven ( : = staat in programmeertaal voor "wordt") net andere woorden het adres van de instruktie die door de programmateller aangewezen wordt (momentane programmatellerstand), wordt in het register IPCR geladen. De handeling reg [PCR] : = mem (reg [oper) + opcode] betekent dat in het 35 register PCR wordt geladen het geheugenwoord (in dit geval een adreswoord) dat is opgeslagen op de geheugenplaats met adres reg (OPER} + opcode. Het adres reg [OPER~] + opcode wordt samengesteld door de inhoud van register OPER op te tellen bij de waarde zoals gegeven in het g 4 0 c o 18 é. ’ί PHN 11.228 9 opcodedeel van het instruktiewoord. Deze handeling reg [pcr] : = mem [reg [OPER] + opcode] houdt dus in dat er in het register PCR een nieuw adres voor de prograirmateller wordt geladen.The operation reg (IPCR) means: = reg (PCRj that the content 3Q of the PCR register is transferred into the IPCR register (: = in programming language stands for "becomes"), in other words the address of the instruction designated by the program counter (current program counter), is loaded into the register IPCR The action reg [PCR]: = mem (reg [oper) + opcode] means that in the register PCR is loaded the memory word (in this case an address word) which is stored in the memory location with address reg (OPER} + opcode. The address reg [OPER ~] + opcode is composed by adding the contents of register OPER to the value as given in g 4 0 co 18 é. 'ί PHN 11.228 9 code part of the instruction word This operation reg [pcr]: = mem [reg [OPER] + opcode] means that a new address for the program counter is loaded into the PCR register.

Het is ook mogelijk dit nieuw adres door andere handelingen dan door 5 de handeling reg [PCR] : = mem [reg [OPER] + opcode] te genereren. Mogelijke andere handelingen 2ijn bijvoorbeeld: a) Reg [PCRj : = reg [OPERJ + opcodeIt is also possible to generate this new address by actions other than by 5 the operation reg [PCR]: = mem [reg [OPER] + opcode]. Possible other actions are for example: a) Reg [PCRj: = reg [OPERJ + opcode

Hierbij wordt het nieuwe adres direkt bepaald zonder dat er een leesoperatie uit het geheugen plaats heeft.The new address is immediately determined without a read operation from the memory.

10 b) Reg [pcr) I = opcode + vast adres10 b) Reg [pcr] I = opcode + fixed address

Dit is een handeling die wordt toegepast wanneer, zoals reeds vermeld, geen gebruik wordt gemaakt van het register OPER. Het nieuwe adres hier samengesteld door bij het opcodedeel van het instruktiewoord een vast adres op te tellen.This is an action that is applied when, as already mentioned, the OPER register is not used. The new address composed here by adding a fixed address to the code part of the instruction word.

15 c) Reg [pcr] : = mem [opcode + vast adres]15 c) Reg [pcr]: = mem [opcode + fixed address]

Ook bij deze handeling wordt geen gebruik gemakt van het OPER register.Also in this operation no use is made of the OPER register.

Deze handeling bevat daarentegen wel een geheugen leesoperatie. Op dit nieuwe adres voor de programnateller staat nu een eerste instruktie van een reeks instrukties die de betekenis van het instruktiewoord met vir-20 tuele opcode interpreteren (55). Deze reeks instrukties wordt altijd afgesloten door een laatste instruktie uit het programma die onmiddellijk volgt op de instruktie met virtuele opcode die het verwerken van genoemde reeks heeft bewerkstelligd. Zo‘n laatste instruktie is bijvoorbeeld van de vorm 25 reg [pcr] : = reg QlKsQ (56)However, this operation does contain a memory read operation. This new program counter address now contains a first instruction of a series of instructions which interpret the meaning of the instruction word with virtual opcode (55). This sequence of instructions is always closed by a final instruction from the program immediately following the instruction with virtual opcode which has accomplished the processing of said sequence. For example, one last instruction is of the form 25 reg [pcr]: = reg QlKsQ (56)

Hierbij wordt dan de programmatellerstand opnieuw op de waarde gesteld welke hij had aan het begin van de executie van de instruktie met virtuele opcodedeel.The program counter is then reset to the value it had at the beginning of the execution of the instruction with the virtual code part.

Het nuttige effect van een virtuele opcode is dat bij iedere 30 virtuele opcode een stukje code geëxecuteerd wordt. In dit stukje code ("de interpretator" van de virtuele opcode) is het mogelijk om op een efficiënte wijze aan de argumentdescriptor (en) van de virtuele opcode te refereren indien IPCR als indexregister wordt gebruikt.The useful effect of a virtual opcode is that a piece of code is executed for every 30 virtual opcode. In this piece of code ("the interpreter" of the virtual opcode) it is possible to efficiently refer to the argument descriptor (s) of the virtual opcode if IPCR is used as index register.

Heeft het computersysteem nu een registerarchitectuur zoals 35 afgebeeld in figuur 6, dan wordt er bij het decoderen van een opcode behorende tot de klasse van virtuele opcodes, naast de handelingen (53) en (54) nog een verdere handeling (150) uitgevoerd, namelijk: reg jyn0 : = \ I-rD · - · Λ « S ^ Ji 3 ;; ' Ij * \ ' PHN 11.228 10If the computer system now has a register architecture as shown in Figure 6, then when decoding an opcode belonging to the class of virtual opcodes, in addition to the operations (53) and (54), a further operation (150) is performed, namely : reg jyn0: = \ I-rD · - · Λ «S ^ Ji 3 ;; 'Ij * \' PHN 11.228 10

Hierbij wordt de inhoud van ten minste het locatiedescriptordeel van het instruktieregister [j.R^ van het computersysteem in het register VIR overgeschreven.The content of at least the location descriptor part of the instruction register [j.R ^ of the computer system is hereby transferred into the register VIR.

Een instruktie met een virtuele opcode onderscheidt zich in 5 hoofdzaak van een instruktie JUMP SUBROUTINE die een normale opcode heeft doordat tijdens de behandeling van de subroutine de programmatel-ler tijdelijk in het geheugen wordt opgeslagen. Enerzijds kost de daarvoor benodigde geheugen schrijfoperatie extra bewerkingstijd, anderzijds is het daardoor niet mogelijk om (zonder extra bewerkingstijd) de oude 10 programmatellerstand als indexregister voor het ophalen van argument-descriptor (en) te gebruiken.An instruction with a virtual opcode differs mainly from an instruction JUMP SUBROUTINE which has a normal opcode in that during the processing of the subroutine the program counter is temporarily stored in the memory. On the one hand the memory write operation required for this takes extra processing time, on the other hand it is therefore not possible (without extra processing time) to use the old program counter as an index register for retrieving argument descriptor (s).

Figuur 2 laat een eerste computerprogramma zien aan de hand van hetwelke een eerste uitvoeringsvorm van de werking van een computersysteem volgens de uitvinding nader zal worden toegelicht. Het programma 15 is slechts als voorbeeld bedoeld. Het zal duidelijk zijn dat een computersysteem volgens de uitvinding niet beperkt is tot het executeren van alleen programma's van deze aard.Figure 2 shows a first computer program by means of which a first embodiment of the operation of a computer system according to the invention will be further elucidated. The program 15 is intended as an example only. It will be clear that a computer system according to the invention is not limited to executing only programs of this nature.

In figuur 2 zijn vijf kolommen te onderscheiden. In de eerste kolom staan de geheugenadressen van de instrukties. De tweede kolom 20 bevat de instrukties geschreven in machinecode (hexadecimale notatie).Five columns can be distinguished in figure 2. The first column contains the memory addresses of the instructions. The second column 20 contains the instructions written in machine code (hexadecimal notation).

De derde en de vierde kolom bevat de instrukties geschreven in "Assembly language" en de vijfde kolom bevat commentaar bij de instruktie.The third and fourth columns contain the instructions written in "Assembly language" and the fifth column contains comments on the instruction.

Alvorens dieper in te gaan op figuur 2 zullen aan de hand van de figuren 4 en 5 eerst enkele algemene aspecten van de instrukties 25 beschreven worden ten einde het lezen van het programma en de verwerking daarvan duidelijker te maken. De figuren 4(a) tot en met (f) laten opcodes zien en hun bijbehorende instruktiewoordindeling. Een instruktie zoals genoteerd in machinecode (figuur 4 of tweede kolom figuur 2) bevat 32 (4x8) bits. De bits 31 tot en met 24 bevatten altijd de opcode.Before going deeper into Figure 2, some general aspects of the instructions 25 will be described with reference to Figures 4 and 5 in order to make the reading of the program and its processing more clear. Figures 4 (a) through (f) show opcodes and their associated instruction word format. An instruction as noted in machine code (Figure 4 or second column Figure 2) contains 32 (4x8) bits. Bits 31 to 24 always contain the opcode.

g 30 Daar het opcodedeel 8 bits bevat, zijn er 2 = 256 verschillende opcodes mogelijk. In het voorbeeld van figuur 2 behoren de opcodes 00 tot en met F8 tot de klasse van virtuele opcodes en de opcodes F9 tot en met FF tot de klasse van de normale opcodes. De indeling van de overige bits (0 tot en met 23) is afhankelijk van de aard en de klasse tot dewelke 35 de opcode behoort.g 30 Since the code section contains 8 bits, 2 = 256 different opcodes are possible. In the example of Figure 2, the opcodes 00 to F8 belong to the class of virtual opcodes and the opcodes F9 to FF belong to the class of normal opcodes. The format of the other bits (0 to 23) depends on the nature and class to which the opcode belongs.

Figuur 4 (a) laat een patroon zien van een instruktie die als opcode heeft één der normale opcodes LOADADRESS (F9), LOADVALUE (FA) of STORE (FB). Bij deze instruktie bevatten de bits 20 tot en met 23 hetFigure 4 (a) shows a pattern of an instruction which is opcode one of the normal opcodes LOADADRESS (F9), LOADVALUE (FA) or STORE (FB). In this instruction, bits 20 through 23 contain it

Af λ ^ -’ï η λ a .a ··; _ · . ·. -r t< *«· '«.· «V tl» PHN 11.228 11 nuirmer van het register (RGN) tot hetwelke de door de opcode gegeven operatie betrekking heeft, en de bits 0 tot en met 19 bevatten de locatiedescriptor (LCDSC). Op de inhoud van deze locatiedescriptor zal verderop nog worden ingegaan.Af λ ^ -'ï η λ a .a ··; _ ·. ·. -r t <* «· '«. · «V tl» PHN 11.228 11 number of the register (RGN) to which the operation given by the opcode relates, and bits 0 to 19 contain the location descriptor (LCDSC). The contents of this location descriptor will be discussed further below.

5 Figuur 4(b) laat het patroon zien van een instruktie die als opcode heeft de normale opcode MONADIC (PC). Bij deze Instruktie bevatten de bits 20 tot en met 23 het nummer van het register (RGN) tot hetwelke de door de opcode gegeven operatie betrekking heeft en de bits 16 tot en met 19 geven de aard van de Monadic-operatie (MNPC) aan ΙΟ (Increment, decrement, etcetera). De overige bits bevatten geen voor deze uitvinding relevante informatie.5 Figure 4 (b) shows the pattern of an instruction that has the opcode as the normal opcode MONADIC (PC). In this Instruction, bits 20 through 23 contain the number of the register (RGN) to which the operation given by the opcode relates, and bits 16 through 19 indicate the nature of the Monadic operation (MNPC)) (Increment, decrement, etc.). The other bits do not contain information relevant to this invention.

Figuur 4(c) laat het patroon zien van een instruktie die als opcode heeft de normale opcode DYADIC (FC). Bij deze instruktie bevatten de bits 20 tot en net 23 het nummer van het eerste register (RGN) 15 en de bits 12 tot en met 15 het nummer van het tweede register (EGT) tot hetwelke de door de opcode gegeven operatie betrekking heeft. De bits 16 tot en met 19 geven de aard van de Dyadic-operatie (DPC) (optellen, aftrekken, logische EN, enzovoorts). De overige bits bevatten geen voor deze uitvinding relevante informatie.Figure 4 (c) shows the pattern of an instruction which is opcode as the normal opcode DYADIC (FC). In this instruction, bits 20 through 23 contain the number of the first register (RGN) 15 and bits 12 through 15 contain the number of the second register (EGT) to which the operation given by the opcode relates. Bits 16 through 19 indicate the nature of the Dyadic operation (DPC) (addition, subtraction, logic AND, etc.). The other bits do not contain information relevant to this invention.

20 Figuur 4(d) respektievelijk 4(e) laat het patroon zien van een instruktie die als opcode heeft de normale opcode JUMP SUBROUTINE (EE), respektievelijk JUMP CONDITIONAL (FF), waarbij voor de instruktie net opcode FF de conditie (CND) door de bits 20 tot en met 23 wordt gegeven. De bits 0 tot en met 19 bevatten telkens de locatiedescriptor 25 (LCDSC). Wanneer nu het computersysteem de opcode "FE" decodeert dan worden de volgende operaties uitgevoerd: mem (reg (SPrQ : = reg (PClO reg jSPRl : = reg {jSPR? + 1 reg [PCR] : = effa (LCDSC) 30 Waarbij "effa" staat voor "effectief adres".Figure 4 (d) and 4 (e) respectively show the pattern of an instruction that is opcode as the normal opcode JUMP SUBROUTINE (EE) and JUMP CONDITIONAL (FF), respectively, where for the instruction just opcode FF the condition (CND) is given by bits 20 to 23. Bits 0 through 19 each contain the location descriptor 25 (LCDSC). Now if the computer system decodes the opcode "FE", the following operations are performed: mem (reg (SPrQ: = reg (PClO reg jSPRl: = reg {jSPR? + 1 reg [PCR]: = effa (LCDSC) 30 Where " effa "stands for" effective address ".

Bij het decoderen van de opcode "FF" wordt in het geval dat aan de conditie (CND) is voldaan de volgende operatie uitgevoerd: reg^PCR] : -effa (LCDSC) (De programmatellerstand (Reg [PCR) ) wordt niet onthouden aangezien bij een Jump Conditional geen retour plaatsvindt.When decoding the opcode "FF", if the condition (CND) is met, the following operation is performed: reg ^ PCR]: -effa (LCDSC) (The program counter (Reg [PCR)) is not remembered since with a Jump Conditional no return takes place.

35 Figuur 4(f) laat het patroon zien van een instruktie net een virtuele opcode (00; ...; F8). De bits 0 tot en met 23 worden hier afhankelijk van de interpretatieroutine gebruikt. Hierop zal verderop in de beschrijving worden ingegaan.Figure 4 (f) shows the pattern of an instruction with a virtual opcode (00; ...; F8). Bits 0 to 23 are used here depending on the interpretation routine. This will be discussed later in the description.

* /. r- t ·> o a * V v PHN 11.228 12* /. r- t ·> o a * V v PHN 11.228 12

De locatiedescriptor beschrijft het adres behorende bij de instruktie-operand. Het computersysteem is van hardware middelen voorzien om deze locatiedescriptor te interpreteren. Figuur 5 laat een aantal voorbeelden zien van locatiedescriptordelen binnen een instruk-5 tiewoord. Voor elke locatiedescriptor geven de bits 16 tot en met 19 telkens de aard van de descriptor aan, welke hieronder voor elk der delen (a) tot en met (f) van figuur 5 zal worden beschreven.The location descriptor describes the address associated with the instruction operand. The computer system is provided with hardware means to interpret this location descriptor. Figure 5 shows a number of examples of location descriptor parts within an instruction word. For each location descriptor, bits 16 through 19 each indicate the nature of the descriptor, which will be described below for each of parts (a) through (f) of Figure 5.

(a) In figuur 5(a) staat het woord "0000" voor een registeroperatie met betrekking tot het register gegeven door de bits 12 tot en 10 met 15. De inhoud van de bits 0 tot en met 11 is voor de beschrijving van de uitvinding niet relevant.(a) In Figure 5 (a), the word "0000" represents a register operation related to the register given by bits 12 through 10 through 15. The contents of bits 0 through 11 are for the description of the invention not relevant.

(b) In figuur 5(b) staat het woord "0001" voor een normale indexoperatie. Hiervan is het resulterende adres a + Reg [rQ waarbij a het getal gegeven door de bits 0 tot en met 11 en n het reg isternummer gegeven 15 door de bits 12 tot en met 15 voorstelt.(b) In Figure 5 (b), the word "0001" represents normal index operation. Of these, the resulting address a + Reg [rQ where a represents the number given by bits 0 through 11 and n represents the register number given 15 through bits 12 through 15.

(c) In figuur 5(c) staat het woord "0010" voor een indexoperatie ge-precedeerd door een aanpassingsoperatie (pre-adjust indexed).(c) In Figure 5 (c), the word "0010" stands for an index operation preceded by a pre-adjust indexed operation.

Zo'n operatie verloopt in twee stappen: het adres gegeven door 20 a + Reg [η] en tevensSuch an operation takes place in two steps: the address given by 20 a + Reg [η] and also

Reg [η] : = a + Reg (nl (a en n hebben dezelfde betekenis als hiervoor geciteerd).Reg [η]: = a + Reg (nl (a and n have the same meaning as quoted above).

(d) In figuur 5(d) staat het woord "0011" voor een indexoperatie ge-25 volgd door een aanpassingsoperatie (post-adjust index). Zo'n operatie verloopt ook weer in twee stappen: het adres is gegeven door Reg jn] ; en tevens 30 Reg Cn3 : = a + Reg \n} (met analoge betekenis voor a en n).(d) In Figure 5 (d), the word "0011" represents an index operation followed by a post-adjust index operation. Such an operation also takes place in two steps: the address was given by Reg jn]; and also 30 Reg Cn3: = a + Reg \ n} (with analogous meaning for a and n).

Bij een indexoperatie die vergezeld is van een aanpassingsoperatie worden er dus telkens zowel een waarde als een adres bepaald. Het gebruik van het adres wordt door het opcodedeel bepaald.Thus, in an index operation accompanied by an adjustment operation, both a value and an address are determined. The use of the address is determined by the code part.

35 (e) In figuur 5(e) staat het woord "0100" voor een getal waarvan de waarde gegeven is door de bits 0 tot en met 15. ("immediate") (f) In figuur 5(f) staat het woord "1111" voor een interpretatie- operatie. De inhoud van het register waarvan het nummer is gegeven t) A ri 9 8 PHN 11.228 13 door de bits 12 tot en met 15 wordt als locatiedescriptor beschouwd. De ïnhoud van de bits 0 tot en net 11 is bestemd voor gegevens te gebruiken in de reeks van instrukties ingeleid door een instruktie met virtueel.opcodedeel» s Aan de hand van de gegevens uit de figuren 4 en 5 zal nu het conputerprograirma geïllustreerd in figuur 2 worden behandeld. Het resultaat van de uitwerking van dit programma is geïllustreerd in figuur 3 (I tot en met VI). Telkens zal in de verdere beschrijving naast de instruktie tussen haakjes worden vermeld in welk deel van figuur 3 10 de betreffende instruktie is uitgewerkt.(E) In Figure 5 (e), the word "0100" represents a number whose value is given by bits 0 through 15. ("immediate") (f) In Figure 5 (f), the word "1111" for an interpretation operation. The contents of the register numbered t) A ri 9 8 PHN 11.228 13 by bits 12 to 15 are considered location descriptors. The contents of bits 0 through 11 are intended for data to be used in the sequence of instructions initiated by an instruction with virtual coding sections. Using the data from Figures 4 and 5, the computer program illustrated in Figure 1 2 are treated. The result of the elaboration of this program is illustrated in Figure 3 (I through VI). In each further description, in addition to the instruction, it will be stated in brackets in which part of Figure 3 the relevant instruction has been worked out.

De eerste instruktie van het computerprogramma is gelocali-seerd op geheugenlocatie met adres 0 en luidt: FAD47FFF; LOADVAL SPR,$$7FFF (figuur 3(1) instr. 1).The first instruction of the computer program is located in memory location with address 0 and reads: FAD47FFF; LOADVAL SPR, $$ 7FFF (Figure 3 (1) instr. 1).

De opcode "FA" duidt aan dat het hier een instruktie met normale opcode 15 (figuur 4 (a)) betreft, en wel de instruktie "LOAD VALUE". Het register-nummer "D" duidt aan dat het te gebruiken register, het register SPR (figuur 1) is. De locatiedescriptor bevat het getal "47FEF", hierin duidt het cijfer 4 dat het een locatiedescriptor betreft van het type zoals afgebeeld in figuur 5 (e), namelijk een getal (immediate) en wel 20 het getal 7FFF. Deze instruktie betekent dus: "Laad (FA) in het Stack Pointer Register (SPR) (D) het getal (4) met waarde 7FFF". In het progranmatellerregister (PCR) is nu het getal 1 opgeslagen, dit betekent dat de eerstvolgende instruktie op geheugen 1 is gelocaliseerd. Het dient te worden opgemerkt dat in dit uitvoeringsvoorbeeld het register 25 ZEROR telkens met de waarde "00000000" en het register ONER telkens met de waarde "00000001" geladen is. De constante waarden 0 en 1 warden dikwijls gebruikt. Het is dus handig om deze constante waarden in een register aanwezig te hebben waardoor ze door eenvoudige registeropera-ties kunnen worden opgehaald.The opcode "FA" indicates that this is an instruction with normal opcode 15 (Figure 4 (a)), namely the instruction "LOAD VALUE". The register number "D" indicates that the register to be used is the register SPR (Figure 1). The location descriptor contains the number "47FEF", herein the number 4 indicates that it is a location descriptor of the type shown in Fig. 5 (e), namely a number (immediate), namely the number 7FFF. This instruction means: "Load (FA) in the Stack Pointer Register (SPR) (D) the number (4) with value 7FFF". The number 1 is now stored in the program counter register (PCR), which means that the next instruction is located on memory 1. It should be noted that in this exemplary embodiment, the register ZEROR is each loaded with the value "00000000" and the register ONER is each loaded with the value "00000001". The constant values 0 and 1 were often used. Thus, it is convenient to have these constant values in a register so that they can be retrieved by simple register operations.

30 Op geheugenplaats 1 is de tweede instruktie van het computer programma gelocaliseerd. Deze tweede instruktie luidt: FAA47F00? LOADVAL OPER,#$7FOO (figuur 3(1), instr. 2).The second instruction of the computer program is located at memory location 1. This second instruction reads: FAA47F00? LOADVAL OPER, # $ 7FOO (Figure 3 (1), instr. 2).

Analoog aan de eerste instruktie is dit een instruktie met normale opcode "LOADVAL". Het registernummer "A" duidt het register OPER (figuur 1) 35 aan. Deze instruktie betekent dus: "Laad in het Operation Extend Register (OPER) het getal met waarde 7F00". In het register PCR is nu -inmiHr|pl s het getal 2 geladen.Analogous to the first instruction, this is an instruction with normal opcode "LOADVAL". The register number "A" denotes the register OPER (Figure 1) 35. So this instruction means: "Load the number with value 7F00 in the Operation Extend Register (OPER)". The number 2 is now loaded in the register PCR -inmiHr | pl s.

De derde instruktie luidt: * ' Λ *’ 2- Ό *Λ V 'w * PHN 11.228 14 FE018400; JSR $400+(ZEROR] (figuur 3(1), instr. 3).The third instruction reads: * 'Λ * ’2- Ό * Λ V' w * PHN 11.228 14 FE018400; JSR $ 400 + (ZEROR] (Figure 3 (1), instr. 3).

De opcode "FE" duidt de instruktie met normale opcode "JUMP SUBROUTINE" (figuur 4(d)) aan. De locatiedescriptor bevat het getal "18400", hierin duidt het cijfer "1" aan dat het een normale indexoperatie betreft 5 (figuur 5(b)). Het cijfer "8" duidt het register ZEROR aan, en het getal "400" geeft de verplaatsing aan. Uitvoering van deze instruktie levert nu: a) item [reg [SPRl] : = reg {pCr] mem Jtfff] : = 00000003 ig Dit betekent dat op geheugenplaats met adres 7FFF het getal 3 wordt geschreven. Dit houdt in dat het adres van de volgende instruktie (geheugenadres 3) op geheugenplaats 7FFF wordt onthouden. ' b) reg [spr] : = reg [SPR] + 1 reg Qspr) : = 00007FFF + 1 = 00008000 15 c) reg [PC^ : = effa (LCDSC) effa (IX3DSC) staat voor de effectieve inhoud van de locatiedescriptor, welke voor dit voorbeeld gegeven is door 400 + [ZEROR). Daar echter 00000000 in het register ZEROR staat, is effa (LCDSC) = 00000400 20 reg Q?CR) : = 00000400The opcode "FE" indicates the instruction with normal opcode "JUMP SUBROUTINE" (figure 4 (d)). The location descriptor contains the number "18400", herein the number "1" indicates that it is a normal index operation 5 (Figure 5 (b)). The number "8" indicates the register ZEROR, and the number "400" indicates the displacement. Implementation of this instruction now yields: a) item [reg [SPRl]: = reg {pCr] mem Jtfff]: = 00000003 ig This means that the number 3 is written on memory location with address 7FFF. This means that the address of the next instruction (memory address 3) at memory location 7FFF is remembered. 'b) reg [spr]: = reg [SPR] + 1 reg Qspr): = 00007FFF + 1 = 00008000 15 c) reg [PC ^: = effa (LCDSC) effa (IX3DSC) stands for the effective content of the location descriptor , which for this example is given by 400 + [ZEROR). However, since 00000000 is in the ZEROR register, effa (LCDSC) = 00000400 20 reg Q? CR): = 00000400

Dit houdt in dat de programmateller nu de geheugenplaats met adres 400 aanduidt. Er is dus een sprong naar geheugenplaats met adres 400 gemaakt.This means that the program counter now indicates the memory location with address 400. So a jump has been made to memory location with address 400.

De vierde instruktie, gelocaliseerd op geheugenplaats met 25 adres 400 luidt: FA03B001; LOADVAL R0,[PCR]++1 7FfFFFFF: $7FFFFFFF (figuur 3(1), instr. 4).The fourth instruction, located at memory location with address 400, reads: FA03B001; LOADVAL R0, [PCR] ++ 1 7FfFFFFF: $ 7FFFFFFF (Figure 3 (1), instr. 4).

Het registernummer van deze instruktie met normale opcode LOAD VALUE is "0". In de locatiedescriptor met waarde "3BQ01" wijst het cijfer 3 3g op een indexoperatie gevolgd door een aanpassingsoperatie (figuur 5 (d)). De letter B duidt aan dat de aanpassing betrekking heeft op het register PCR (figuur 1) en het getal "001" geeft de hoeveelheid van de aanpassing aan. Deze instruktie betekent dus:The register number of this instruction with normal opcode LOAD VALUE is "0". In the location descriptor with value "3BQ01", the number 3 3g indicates an index operation followed by an adaptation operation (Figure 5 (d)). The letter B indicates that the match refers to the PCR register (Figure 1) and the number "001" indicates the amount of the match. So this instruction means:

Reg |CÜ : = mem [reg iPCÖj 35 Re9 [0] : = nem [40]]Reg | CÜ: = mem [reg iPCÖj 35 Re9 [0]: = nem [40]]

Laad in het register R0 de waarde welke is opgeslagen op het geheugenadres dat wordt gegeven door de inhoud van register PCR en verhoogIn the register R0, load the value stored at the memory address given by the contents of register PCR and increase

o Λ '* - -F 0 SIo Λ '* - -F 0 SI

f-. 'V ***“· PHN 11.228 15 vervolgens de inhoud van register PCR net het getal "OOI". In het register PCR is de waarde (400 + 1 =) 401 opgeslagen. Op adres 401 staat de waarde 7FFFFFFF welke nu in het register R0 wordt opgeslagen. De aanpassingsoperatie levert dan vervolgens: 5 reg (ÈCR] : = reg [PCR] + 1 reg QaQ ; = 401 +1 reg (jdTl : = 402f-. "V ***" · PHN 11.228 15 then the contents of register PCR with the number "OOI". The value (400 + 1 =) 401 is stored in the PCR register. At address 401 there is the value 7FFFFFFF which is now stored in the register R0. The adjustment operation then yields: 5 reg (ÈCR]: = reg [PCR] + 1 reg QaQ; = 401 +1 reg (jdTl: = 402

De vijfde instrukfcie, gelocaliseerd op geheugenplaats met 402, luidt: 10 FAB2DFFF; LQADVAL PCR,-1-H-[SPR) (figuur 3(1), instr. 5).The fifth instruction located at memory location 402 reads: 10 FAB2DFFF; LQADVAL PCR, -1-H- [SPR) (Figure 3 (1), instr. 5).

Het registernuirmer "B" duidt het register PCR aan. In de locatiedes-criptor met waarde "2DFFF" wijst het cijfer 2 op een indexoperatie, geprecedeerd door een aanpassingsoperatie (figuur 5(c)), de letter D staat voor het register SPR en het hexadecimale getal FFF (2-complements-15 notatie) staat voor "-1", dat de hoeveelheid van de aanpassing aangeeft, reg (SPR] : = reg (SPR) -1 reg [SPR) : = 00008000 -1 reg [SPR] : = 00007FFF reg [pCR) : = mem Qreg [SPrQ 20 reg [pCR) : = mem 7FFFThe register number "B" designates the register PCR. In the location descriptor with value "2DFFF", the number 2 indicates an index operation, preceded by an adjustment operation (figure 5 (c)), the letter D stands for the register SPR and the hexadecimal number FFF (2-complements-15 notation ) stands for "-1", which indicates the amount of adjustment, reg (SPR): = reg (SPR) -1 reg [SPR): = 00008000 -1 reg [SPR]: = 00007FFF reg [pCR): = mem Qreg [SPrQ 20 reg [pCR): = mem 7FFF

reg ^PCRj : = 00000003 want zoals aangegeven bij derde instruktie is op geheugenplaats met adres 7FFF de waarde "3" geladen. Het uitlezen uit het geheugen en laden van 00000003 in het register PCR houdt in dat de subroutine is beëindigd 25 en dat het gewone programma nu weer wordt hervat en wel met de instruktie geladen op adres 3 van het geheugen.reg ^ PCRj: = 00000003 because, as indicated in the third instruction, the value "3" is loaded on the memory location with address 7FFF. Reading from memory and loading 00000003 into the register PCR means that the subroutine has ended and that the normal program is now resumed with the instruction loaded at address 3 of the memory.

De zesde instruktie luidt dan: FA742000; LOADVAL R7,#$20QQ (figuur 3(II), instr. 6).The sixth instruction then reads: FA742000; LOADVAL R7, # $ 20QQ (Figure 3 (II), instr. 6).

Deze instruktie houdt in: "Laad in het register R7 het getal met waarde 30 2000".This instruction means: "Load in the register R7 the number with value 30 2000".

De zevende instruktie luidt: 00040020; ADDSTACK #$20 (figuur 3(II), instr. 7).The seventh instruction reads: 00040020; ADDSTACK # $ 20 (Figure 3 (II), Instr. 7).

De opcode "00" duidt aan dat het hier om een opcode gaat uit de klasse van virtuele opcodes (00 6 ^00, ..., F8j ). De decodeerinrichting van 35 het computersysteem decodeert deze virtuele opcode en het systeem zal dus als gevolg hiervan de volgende operaties uitvoeren: a) reg {ÏFCF3 : = reg [PCR) b) reg (PCïQ : = mem [reg (OPER) + OPCODE) -Λ ί Λ '"too PHN 11.228 16The opcode "00" indicates that this is an opcode from the class of virtual opcodes (00 6 ^ 00, ..., F8j). The computer system decoder decodes this virtual opcode and thus the system will perform the following operations as a result: a) reg {ICFF3: = reg [PCR] b) reg (PCQ: = mem [reg (OPER) + OPCODE) -Λ ί Λ '"too PHN 11.228 16

Toepassing van deze operaties bij deze zevende instruktie geeft dan: a) reg (iPCR] : = reg [PCR) reg (ÏPClÜ : = 00000005Application of these operations to this seventh instruction then gives: a) reg (iPCR]: = reg [PCR] reg (ÏPClÜ: = 00000005

De inhoud van het register PCR (itonentane programmateller-5 stand) wordt dus in het register IPCR geladen. In tegenstelling tot een JUMP SUBROUTINE-instruktie (derde instruktie) wordt hier dus geen schrijfoperatie in het geheugen uitgevoerd. Bovendien kost het laden van PCR in IPCR aanzienlijk minder bewerkingstijd daar dit een gewone registeroperatie is.Thus, the contents of the PCR register (original program counter-5 position) are loaded into the IPCR register. In contrast to a JUMP SUBROUTINE instruction (third instruction), therefore, no write operation is performed in the memory. In addition, loading PCR into IPCR takes considerably less processing time as this is a normal register operation.

10 b) reg [PCR] : = mem [reg (OPER) + OPCODE) reg [PCR] : = mem (JEFF + OOD reg [PCR] : = mem (jFOQ) reg [PCR] : = 00001000 want zoals blijkt uit figuur 2 staat op geheugenplaats met adres 7F00 15 hét woord 00001000 geschreven, dat nu in het register PCR wordt geladen. De gegevens uit laatstgenoemde figuur suggereren dat de inhoud van de locatiedescriptor van geen belang zou zijn. Dit is echter niet zo. Bij de verdere beschrijving van het programma zal blijken dat de locatiedescriptor bij een instruktie met virtuele opcode wel degelijk wordt 20 gebruikt, en dus deze zelfs op dusdanige manier wordt gebruikt dat hij reeds zoveel gegevens bevat, meer dan bijvoorbeeld mogelijk zou zijn bij gebruik van de instruktie JUMP SUBROUTINE, waar alleen een geheugen-adres kan worden opgenomen.10 b) reg [PCR]: = mem [reg (OPER) + OPCODE) reg [PCR]: = mem (JEFF + OOD reg [PCR]: = mem (jFOQ) reg [PCR]: = 00001000 as shown by Figure 2 is written in memory location with address 7F00 15 the word 00001000, which is now being loaded into the register PCR The data from the latter figure suggest that the contents of the location descriptor would be of no importance, however this is not the case in the further description of the program will show that the location descriptor is actually used with an instruction with virtual opcode, and so it is even used in such a way that it already contains so much data, more than would be possible, for example, when using the instruction JUMP SUBROUTINE , where only a memory address can be recorded.

De achtste instruktie, opgeslagen op de geheugenplaats met 25 adres 1000 luidt: FA027FFF; LOADVAL R0,-1++(¾¾ (figuur 3(11), instr. 8).The eighth instruction, stored in the memory location with address 1000, reads: FA027FFF; LOADVAL R0, -1 ++ (¾¾ (Figure 3 (11), instr. 8).

Deze instruktie houdt de volgende operaties in: a) Reg QÖ :=-1+ reg (Y)This instruction involves the following operations: a) Reg QÖ: = - 1+ reg (Y)

Reg 0 : = -1 + 2000Reg 0: = -1 + 2000

30 Reg C3 : = 1FFF30 Reg C3: = 1FFF

b) Reg Cd] : = mem [reg 0)b) Reg Cd]: = mem [reg 0)

Reg [cQ : = mem [jFFÈ]Reg [cQ: = mem [jFFÈ]

Reg lef) : = 00000000Reg lef): = 00000000

Op geheugenplaats met adres 1FFF staat de waarde 00000000.The memory location with address 1FFF contains the value 00000000.

35 Deze operaties stellen in feite een "POP"-operatie voor toegepast op register R7, die de rol van stapelwijzer vervult.These operations in fact represent a "POP" operation applied to register R7, which performs the role of stack pointer.

De negende instruktie luidt: FA11CFFF; LOADVAL R1,-1 + CiP0r) (figuur 3(11), instr. 9).The ninth instruction reads: FA11CFFF; LOADVAL R1, -1 + CiP0r) (figure 3 (11), instr. 9).

3 4 V O ü ί O3 4 V O ü ί O

PHN 11.228 17PHN 11.228 17

Deze instruktie houdt de volgende operatie in:This instruction involves the following operation:

Reg ff} ; = nem Q*1 + reg (iPCRjJ Reg U] : = mem (j-1 + 5]Reg ff}; = nem Q * 1 + reg (iPCRjJ Reg U]: = mem (j-1 + 5]

Reg 03 : = mem jjj 5 In het register R1 wordt dus de inhoud yan geheugenplaats met adres 4 geladen. Maar daar staat precies de zevende instruktie die als machine-code 00040020 heeft. Deze operatie is bedoeld om de locatiedescriptor van de virtuele instruktie op te halen ten einde er in een verdere instruktie gebruik van te maken.Reg 03: = mem yyy 5 In the register R1 the content of a memory location with address 4 is loaded. But there is exactly the seventh instruction that has machine code 00040020. This operation is intended to retrieve the location descriptor of the virtual instruction for use in a further instruction.

10 De tiende instruktie luidt: FA1F1000; LOADVftL R1,9R1 (figuur 3(11), instr. 10).10 The tenth instruction reads: FA1F1000; LOADVftL R1,9R1 (Figure 3 (11), Instr. 10).

In de locatiedescriptor "F1000" wijst de letter "F" erop dat het hier om een interpretatie-operatie handelt (figuur 5 (f)). Deze instruktie houdt dus in: "Laad in register R1 de betekenis van de locatiedescriptor 15 van de instruktie welke in register R1 is geladen". De instruktie geladen in register R1 tijdens de behandeling van de negende instruktie heeft als locatiedescriptor "40020", wat op zijn beurt betekent: het getal (4) met waarde 20. Bij gevolg wordt er nu in het register R1 het woord "00000020" geschreven. Hieruit blijkt nu het belang van de locatiedes-20 criptor bij een instruktie met virtuele opcode. In deze locatiedescriptor wordt informatie opgeslagen die in de reeks instrukties ingeleid door een instruktie met virtuele opcode wordt verwerkt.In the location descriptor "F1000", the letter "F" indicates that this is an interpretation operation (Figure 5 (f)). This instruction thus means: "Load in register R1 the meaning of the location descriptor 15 of the instruction which is loaded in register R1". The instruction loaded in register R1 during the handling of the ninth instruction has as location descriptor "40020", which in turn means: the number (4) with value 20. Consequently, the word "00000020" is now written in register R1. . This now shows the importance of the location des-20 descriptor in an instruction with virtual opcode. This location descriptor stores information that is processed in the sequence of instructions initiated by a virtual opcode instruction.

De elfde instruktie luidt: FD001000; DYADIC ADD R0,R1 (figuur 3(III), instr. 11).The eleventh instruction reads: FD001000; DYADIC ADD R0, R1 (Figure 3 (III), Instr. 11).

25 De opcode "ED" geeft een DYADIC-operatie aan (figuur 4(cj) tussen een eerste register R0 en een tweede register R1. De aard van de operatie (waarde 0 bits 16 tot en met 19) is een opteloperatie. Deze instruktie houdt dus in: "Tel de inhoud van register R0 en register R1 bij elkaar op en schrijf het resultaat in register R0 30 Reg [O] : = Reg Qfj + Reg fjjThe opcode "ED" indicates a DYADIC operation (Figure 4 (cj) between a first register R0 and a second register R1. The nature of the operation (value 0 bits 16 to 19) is an addition operation. This instruction which means: "Add the contents of register R0 and register R1 together and write the result in register R0 30 Reg [O]: = Reg Qfj + Reg fjj

Reg [Ö3 : = 00000000 + 00000020 Reg OÖ : = 00000020"Reg [Ö3: = 00000000 + 00000020 Reg OÖ: = 00000020 "

De twaalfde instruktie luidt: FB037001; STORE R0,jR7)-H-1 (figuur 3(III), instr. 12).The twelfth instruction reads: FB037001; STORE R0, jR7) -H-1 (Figure 3 (III), Instr. 12).

35 Deze instruktie houd de volgende operaties in: a) mem jlreg jjzf) : = reg [cf) mem ijEEF} : = 2035 This instruction implies the following operations: a) mem jlreg jjzf): = reg [cf) mem ijEEF}: = 20

Dus op geheugenplaats met adres 1FFF wordt het getal 20 geschreven.So in memory location with address 1FFF the number 20 is written.

> ,, '· o PHN 11.228 18 b) reg DG : = reg [7] + 1 reg Cz) · = 1FEF + 1 reg (jG : = 2000> ,, 'o PHN 11.228 18 b) reg DG: = reg [7] + 1 reg Cz) = = 1FEF + 1 reg (jG: = 2000

Deze operaties stellen in feite een "PUSH"-operatie voor, toegepast 5 op register R7, die de rol van stapel vervult.In fact, these operations represent a "PUSH" operation applied to register R7, which performs the role of stack.

De dertiende instruktie luidt: FAB0G000; LQADVAL PCR,IPCR (figuur 3(III), instr. 13).The thirteenth instruction reads: FAB0G000; LQADVAL PCR, IPCR (Figure 3 (III), instr. 13).

Dit is de slotinstruktie waarmee de reeks instrukties ingeleid door een instruktie met virtuele opcode wordt afgesloten. Deze instruktie 10 bevat de operatie: "Laad in het register PCR, de inhoud van het register IPCR". Aangezien in het register IPCR de stand van de programmateller was bewaard, betekent dit dus dat de instruktie volgend op de instrukties met virtuele opcode, die nu is afgewerkt, nu aan de orde zal kernen.This is the closing instruction that concludes the sequence of instructions initiated by a virtual opcode instruction. This instruction 10 contains the operation: "Load in the register PCR, the contents of the register IPCR". Since the state of the program counter was stored in the register IPCR, this means that the instruction following the instructions with virtual opcode, which has now been completed, will now be addressed.

Het totale effect van de virtuele instrukties (zevende instruktie 15 ADDSTACKƒ 20) is nu dat bij de top van de stapel behorend bij de stapel-wijzer (Register 7) het getal 20 is opgeteld.The overall effect of the virtual instructions (seventh instruction 15 ADDSTACKƒ 20) is that the number 20 has been added to the top of the stack associated with the stack pointer (Register 7).

De veertiende instruktie, gelocaliseerd op geheugenplaats met adres 5 luidt: 00018100; ADDSTACK $100+[zerOR} (figuur 3(III), instr. 14).The fourteenth instruction, located at memory location with address 5, reads: 00018100; ADDSTACK $ 100 + [zerOR} (Figure 3 (III), Instr. 14).

20 De opcode "00" behoort tot de klasse van virtuele opcodes. Het computersysteem voert dus de volgende operaties uit: a) reg (iPCR) : = reg (PCR] reg (iPCRi : = 6 b) reg (PCR] : = mem [reg [OPERj + OPCODE] 25 reg (PCR] : = mem [jFOO+OO) reg [PCR] : = 0000100020 The opcode "00" belongs to the class of virtual opcodes. Thus, the computer system performs the following operations: a) reg (iPCR): = reg (PCR] reg (iPCRi: = 6 b) reg (PCR]: = mem [reg [OPERj + OPCODE] 25 reg (PCR]: = mem [jFOO + OO) reg [PCR]: = 00001000

De vijftiende instruktie, gelocaliseerd op geheugenplaats met adres 1000 luidt: FA027FFF; LOADVAL R0,-1++(¾¾ (figuur 3 (III) , instr. 15).The fifteenth instruction, located at memory location with address 1000, reads: FA027FFF; LOADVAL R0, -1 ++ (¾¾ (Figure 3 (III), instr. 15).

3q Deze instruktie houdt de volgende operaties in:3q This instruction involves the following operations:

a) reg 0Q :=-1+ reg jj] reg ijJ :=-1 + 2000 reg [7} : = 00001FFFa) reg 0Q: = - 1+ reg yy] reg ijJ: = - 1 + 2000 reg [7}: = 00001FFF

b) reg [oj : = mem [reg (~7~f) 35 reg βΟ : = mem JjFFF) reg [o] : = 20b) reg [oj: = mem [reg (~ 7 ~ f) 35 reg βΟ: = mem YyFFF) reg [o]: = 20

Het aanwezig zijn van de waarde 20 op geheugenplaats met adres 1FFF is het gevolg van het behandelen van de twaalfde instruktie.The presence of the value 20 in memory location with address 1FFF is the result of the handling of the twelfth instruction.

34 0 5 6 28 PHN 11.228 1934 0 5 6 28 PHN 11.228 19

De zestiende instruktie luidt: FA11CFFF; LOADVAL R1 ,-1+£EFCR] (figuur 3 (IV), instr. 16).The sixteenth instruction reads: FA11CFFF; LOADVAL R1, -1 + £ EFCR] (Figure 3 (IV), Instr. 16).

Deze instruktie houdt de volgende operaties in:This instruction involves the following operations:

Reg Q3 : - item [y1 + reg (IFCR}) 5 Reg Ij] : = item Γ-1 + 6}Reg Q3: - item [y1 + reg (IFCR}) 5 Reg Ij]: = item Γ-1 + 6}

Reg LÖ : = mem CO Reg 03 : = 00018100Reg LÖ: = mem CO Reg 03: = 00018100

Opnieuw (analoog aan de negende instruktie) wordt dus de code van de instruktie met virtuele opcode in het register R1 geladen. ' 10 De zeventiende instruktie luidt: FA1F1000; LQ&DVAL R1 ,ÖR1 (figuur 3 (IV), instr. 17).Thus, again (analogous to the ninth instruction), the code of the instruction with virtual opcode is loaded into register R1. 10 The seventeenth instruction reads: FA1F1000; LQ & DVAL R1, ÖR1 (Figure 3 (IV), Instr. 17).

Deze instruktie is analoog aan de tiende instruktie. De instruktie die geladen is in register R1 heeft als locatiedescriptor "18100" wat staat voor de operatie: 15 Reg [Ο ; - item [$100 + reg (ZEROR)]This instruction is analogous to the tenth instruction. The instruction loaded in register R1 has location descriptor "18100" which represents the operation: 15 Reg [Ο; - item [$ 100 + reg (ZEROR)]

Keg Q] : = mem [l00 + 5)Keg Q]: = mem [100 + 5)

Reg 03 : = mem Qoo}Reg 03: = mem Qoo}

Reg 00 : = FFFFFFE0Reg 00: = FFFFFFE0

In het register R1 wordt dus het woord FFFFFFE0 geladen. Ook hier komt 20 wser naar voren hoe in een computersysteem volgens de uitvinding gebruik wordt gemaakt van de locatiedescriptor bij een instruktie met virtuele opcode.Thus, the word FFFFFFE0 is loaded in register R1. Here, too, 20 wser shows how in a computer system according to the invention the location descriptor is used in an instruction with virtual opcode.

De acntiende instruktie luidt: FD001000; DYADIC ADD R0,R1 (figuur 3(IV), instr. 18).The current instruction reads: FD001000; DYADIC ADD R0, R1 (Figure 3 (IV), Instr. 18).

25 Deze instruktie houdt de volgende operatie in:25 This instruction involves the following operation:

Reg {0J : = Reg [Ö] + Reg 03 Reg 0)3 : = 00000020 + FFFEEFE0 Reg COj : = 00000000Reg {0J: = Reg [Ö] + Reg 03 Reg 0) 3: = 00000020 + FFFEEFE0 Reg COj: = 00000000

Het feit dat het resultaat van deze operatie 0000000Q is, heeft hier als 3Q gevolg dat de waarde 00000020 in het register CCR wordt geladen.The fact that the result of this operation is 0000000Q results here as 3Q in that the value 00000020 is loaded into the register CCR.

De negentiende instruktie luidt: FB037001; STORE R0,(R7]-h-1 (figuur 3(IV), instr. 19).The nineteenth instruction reads: FB037001; STORE R0, (R7] -h-1 (Figure 3 (IV), instr. 19).

wat de volgende operatie inhoudt: a) mem [reg Cu) : = Reg [O)which means the following operation: a) mem [reg Cu): = Reg [O)

35 mem (jFFF} : = Reg QQ35 mem (jFFF}: = Reg QQ

item 0FFÊ1 : = 00000000 b) Reg L7j : = Reg |j3 + 1 Reg [7j : = 1EEF + 1 ** .*%·*. ' _ Λ * \ * PHN 11.228 20item 0FFÊ1: = 00000000 b) Reg L7j: = Reg | j3 + 1 Reg [7j: = 1EEF + 1 **. *% · *. '_ Λ * \ * PHN 11.228 20

Reg [i] : = 00002000Reg [i]: = 00002000

De twintigste instruktie luidt: FAB0C000; LOADVAL PCR,IPCR (figuur 3 (IV), instr. 20).The twentieth instruction reads: FAB0C000; LOADVAL PCR, IPCR (Figure 3 (IV), instr. 20).

wat de volgende operaties inhoudt: 5 Reg [PCR) : = Reg flPCR}which means the following operations: 5 Reg [PCR): = Reg flPCR}

Reg [Ρθή : = 00000006Reg [Ρθή: = 00000006

Dus opnieuw de eindins trukt ie waarmee een reeks instrukties ingeleid door een virtuele opcode wordt afgesloten.So again the final instruction which concludes a series of instructions initiated by a virtual opcode.

De éénentwintigste instruktie luidt: 10 01018101; ORSTACK $101+[ZERO^ (figuur 3 (V), instr. 21).The twenty-first instruction reads: 10 01018101; ORSTACK $ 101 + [ZERO ^ (Figure 3 (V), Instr. 21).

Dit is opnieuw een instruktie met een opcode ("01") behorende tot de klasse van virtuele opcodes. De uit te voeren operaties zijn dus: a) Reg QÏPCR) : = reg (PCR)This is again an instruction with an opcode ("01") belonging to the class of virtual opcodes. The operations to be performed are thus: a) Reg QÏPCR): = reg (PCR)

Reg (ÏPCÖ : = 00000007 15 b) Reg QpCR) : = item [reg jOPER) + OPCODE)Reg (ÏPCÖ: = 00000007 15 b) Reg QpCR): = item [reg jOPER) + OPCODE)

Reg [PCR] : = mem [7F00 + OÏ)Reg [PCR]: = mem [7F00 + OÏ)

Reg (j?CRj : = item [7F0f)Reg (j? CRj: = item [7F0f)

Reg [PCR] : = 00001010 (zie figuur 2)Reg [PCR]: = 00001010 (see Figure 2)

Uit deze instruktie is nu naar voren gekomen dat bij een virtuele 20 opcode de inhoud van deze opcode dient om zowel het herkennen van een virtuele opcode alsook voor het bepalen van een geheugenadres van een fcegininstruktie van een reeks instruktiewoorden die de betekenis van de instruktie met virtuele opcode bepalen.It has now emerged from this instruction that in the case of a virtual opcode, the content of this opcode serves both to recognize a virtual opcode and to determine a memory address of a main instruction of a series of instruction words that indicate the meaning of the instruction with virtual determine opcode.

De tweeëntwintigste, instruktie, gelocaliseerd op geheugen-25 plaats met adres 1010 luidt: FA027FEF; LOADVAL R0,-1++(¾] (figuur 3(IV), instr. 22).The twenty-second, instruction located at memory 25 location with address 1010 reads: FA027FEF; LOADVAL R0, -1 ++ (¾] (Figure 3 (IV), instr. 22).

Deze instruktie omvat de volgende operaties: a) Reg jjD : = mem (j-1 + Reg CQ]This instruction includes the following operations: a) Reg yyD: = mem (j-1 + Reg CQ]

Reg Ld) : = mem Q-1 + 2000} 30 Reg tol 5 = mem (JFFF}Reg Ld): = mem Q-1 + 2000} 30 Reg toll 5 = mem (JFFF}

Reg [cf] : = 00000000 (zie hiervoor instruktie 19) b) Reg Cf) : = -1 + Reg (7)Reg [cf]: = 00000000 (see instruction 19) b) Reg Cf): = -1 + Reg (7)

Reg [7) : = 00001FFFReg [7): = 00001FFF

De drieëntwintigste instruktie luidt: 35 FA11CFFF; LOADVAL R1,-1+(ÏPCr) (figuur 3(V), instr. 23).The twenty-third instruction reads: 35 FA11CFFF; LOADVAL R1, -1 + (ICPr) (Figure 3 (V), Instr. 23).

Deze instruktie omvat de volgende operatie:This instruction includes the following operation:

Reg Q]: = mem f1 + Reg (jPCiJ)Reg Q]: = mem f1 + Reg (jPCiJ)

Reg Qf) : = rrem ljj-1 + ^ 8403628 V " * ΡΗΝ Π.228 21Reg Qf): = brake ljj-1 + ^ 8403628 V "* ΡΗΝ Π.228 21

Reg j"3: = 11)0111 Ü? J Reg 0j : = 01018101Reg j "3: = 11) 0111? J Reg 0j: = 01018101

De vierentwintigste instruktie luidt: FA1F1000; LOADVSL R1/2R1 (figuur 3(V), instr, 24).The twenty-fourth instruction reads: FA1F1000; LOADVSL R1 / 2R1 (figure 3 (V), instr, 24).

5 De locatiedescriptor van de instruktie in register 1 ongeslagen bevat "18101". Dit houdt als operatie in:5 The location descriptor of the instruction in register 1 unbeaten contains "18101". As an operation this means:

Reg Q3 : = nem [$101 + Reg (ZERORj]Reg Q3: = nem [$ 101 + Reg (ZERORj]

Reg 03 : “ icem 0°O Reg 03 : = F0000100 IQ De vijfentwintigste instruktie luidt: FD06100Q; DYADIC OR R0,R1 (figuur 3(V), instr. 25).Reg 03: “icem 0 ° O Reg 03: = F0000100 IQ The twenty-fifth instruction reads: FD06100Q; DYADIC OR R0, R1 (Figure 3 (V), Instr. 25).

In deze instruktie wijst het cijfer "6" op een logische "OF"-operatie.In this instruction, the number "6" indicates a logical "OR" operation.

Reg [0] : = Reg [O] V Reg [Q Reg [q] : = F0000100 l5 Het feit dat nu in Reg 0 een negatief getal komt (F, 2-complements-notatie) heeft tot gevolg dat de waarde 00000010 in het register CCR wordt geladen. Uit deze instruktie en de vorige blijkt nu de mogelijkheid om door middel van virtuele opcodes een verscheidenheid aan operaties te laten uitvoeren.Reg [0]: = Reg [O] V Reg [Q Reg [q]: = F0000100 l5 The fact that now a negative number is entered in Reg 0 (F, 2-complement notation) means that the value 00000010 in the CCR register is loaded. This instruction and the previous one now show the possibility of having a variety of operations performed by means of virtual opcodes.

20 De zesentwintigste instruktie luidt: FB037001; STORE R0,[R7}-H-1 (figuur 3 (VI), instr. 26).20 The twenty-sixth instruction reads: FB037001; STORE R0, [R7} -H-1 (Figure 3 (VI), Instr. 26).

Deze instruktie houdt de volgende operaties in: a) mem \Reg \j0: = Reg (0) man [|EFf3 : = F00001Q0 25 b) Reg [73 : - Reg (V) + 1This instruction involves the following operations: a) mem \ Reg \ j0: = Reg (0) man [| EFf3: = F00001Q0 25 b) Reg [73: - Reg (V) + 1

Reg tj3 : = 1FEF + 1 Reg : * 2000Reg tj3: = 1FEF + 1 Reg: * 2000

De zevenentwintigste instruktie luidt: FAB0C000; LOADVAL PCR,IPCR (figuur 3(VI), instr. 27).The twenty-seventh instruction reads: FAB0C000; LOADVAL PCR, IPCR (Figure 3 (VI), Instr. 27).

30 wat inhoudt:30 which means:

Reg [PCr3 : = Reg (ÏpCR)Reg [PCr3: = Reg (IPCR)

Reg [PCr3 : = 7Reg [PCr3: = 7

Het computersysteem zal nu de instrukties gelocaliseerd op geheugen-plaats met adres 7 gaan behandelen en zodoende het programma verder 35 afhandelen. Op de uitwerking van deze instruktie zal niet verder worden ingegaan daar dit van geen belang is voor het beschrijven van de uitvinding. Deze instruktie sluit dan tevens het computerprogramma af dat ter illustratie van het functioneren van een computersysteem volgens de 5 i ;$ N» 1 ·._· PHN 11.228 22 uitvinding werd beschreven.The computer system will now handle the instructions located at memory location with address 7 and thus continue to process the program. The elaboration of this instruction will not be further discussed since this is of no importance for describing the invention. This instruction then also terminates the computer program described to illustrate the operation of a computer system according to the invention.

In hoofdzaak zijn uit de beschrijving van dit computerpro-gramma twee bijzondere aspecten naar voren gekomen. Deze zijn: a) Het behandelen van een instruktie met virtuele opcode.Mainly, two special aspects have emerged from the description of this computer program. These are: a) Handling an instruction with virtual opcode.

5 b) Het behandelen van de locatiedescriptor bij een Instruktie met virtuele opcode.5 b) Treating the location descriptor at an Instruction with virtual opcode.

Het feit dat bij een computersysteem volgens de uitvinding instrukties met virtuele opcodes te gebruiken zijn, biedt een breed spectrum van mogelijkheden aan de systeemprogramraeur. Door gebruik te maken van een 10 instruktie met. virtuele opcode kan een reeks instrukties worden ingeleid om een bepaalde bewerking te doen. Deze bewerking kan zijn een optelling (Instruktie elf) of een vermenigvuldiging of elke andere operatie. De systeemprogrammeur kan aldus door een zelf gekozen definitie van virtuele opcodes het computersysteem zo programmeren dat nieuwe 15 "Instrukties" ontstaan. Gezien de efficiënte opslag van PCR in IPCR en het feit dat IPCR als indexregister wordt gebruikt, worden zulke nieuwe instrukties op efficiënte wijze afgehandeld. Verder is het mogelijk door het wijzigen van OPER (wijzen naar een andere tabel) om per programma een andere verzameling van instrukties aan te bieden waarbij rekening 2Q is gehouden met de taal waarin het programma is geschreven (een Pascal-machine voor Pascal, een Cobol-machine voor Cobol).The fact that instructions with virtual opcodes can be used in a computer system according to the invention offers a wide range of possibilities to the system programmer. By using a 10 instruction with. virtual opcode can initiate a series of instructions to do a particular operation. This operation can be an addition (Instruction eleven) or a multiplication or any other operation. The system programmer can thus program the computer system by means of a self-chosen definition of virtual opcodes such that new "Instructions" are created. Given the efficient storage of PCR in IPCR and the fact that IPCR is used as an index register, such new instructions are handled efficiently. Furthermore it is possible by changing OPER (pointing to another table) to offer a different set of instructions per program, taking into account 2Q the language in which the program is written (a Pascal machine for Pascal, a Cobol machine for Cobol).

De locatiedescriptor van een instruktie met virtuele opcode bevat informatie die in een reeks instrukties wordt verwerkt. Het verwerken van deze informatie kan op meerdere manieren en wordt volledig 25 bepaald door de instrukties uit genoemde reeks. De instrukties uit die reeks zijn meestal instrukties voorzien van een normale opcode. Echter is het ook mogelijk om hier instrukties net virtuele opcodes te gebrui- · ken. In dat geval dient echter eerst de inhoud van het IPCR-register op een stapel in het geheugen te worden geplaatst.The location descriptor of a virtual opcode instruction contains information that is processed in a series of instructions. The processing of this information can be done in several ways and is entirely determined by the instructions from said series. The instructions in that series are usually instructions with a normal opcode. However, it is also possible to use instructions with virtual opcodes here. In that case, however, the contents of the IPCR register must first be stacked in memory.

3Q Figuur 7 laat een tweede computerprogramma zien aan de hand van hetwelke een tweede uitvoeringsvorm van een werkwijze volgens de uitvinding zal worden toegelicht. Het tweede programma kan alleen worden geëxecuteerd door een computersysteem dat voorzien is van een register-architectuur zoals af geheeld in figuur 6, omdat de uitvoering van het 35 tweede programma de aanwezigheid van een register VIR (B) vereist.3Q Figure 7 shows a second computer program by means of which a second embodiment of a method according to the invention will be explained. The second program can only be executed by a computer system provided with a register architecture as shown in Figure 6, because the execution of the second program requires the presence of a register VIR (B).

De uitvoering van het tweede programma vertoont veel gelijkenis aan diegene van het eerste programma (figuur 2), daarom zal alleen het verschil net het eerste programma worden beschreven. Daar de regis- 8403528 PHDÏ 11.228 23 terarchitectuur af geheeld in figuur 6 verschillend is van diegene.-in figuur 1, dienden hiervoor enkele instrukties te worden aangepast. Zo is bijvoorbeeld het register SPR niet neer als D maar als E aangeduid, en wordt de instruktie op geheugenplaats 0 nu FAE47FFF, in plaats van 5 FAD47FFF. Daar deze aanpassingen eenvoudig herkenbaar zijn, zal hier niet verder op worden ingegaan.The execution of the second program is very similar to the one of the first program (Figure 2), therefore only the difference will be described just the first program. Since the register architecture shown in Figure 6 is different from the one in Figure 1, some instructions had to be adapted for this. For example, the register SPR is not designated as D but down as E, and the instruction at memory location 0 now becomes FAE47FFF, instead of FAD47FFF. Since these adjustments are easily recognizable, they will not be discussed further.

Figuur 8 laat het resultaat zien van de uitvoering van het in figuur 7 afgebeelde tweede computerprogramma. In dit uitvoeringsvoor-bëeld zijn de register R8 en R9 telkens met de waarde "00000000" geladen. 10 De uitwerking van de eerste 6 instrukties vertoont geen verschil met de uitwerking van het eerste computerprogramma.Figure 8 shows the result of the execution of the second computer program shown in Figure 7. In this exemplary embodiment, the registers R8 and R9 are each loaded with the value "00000000". The elaboration of the first 6 instructions shows no difference with the elaboration of the first computer program.

Bij de zevende instruktie, welke de instruktie met virtuele opcode: 00060020; ADDSIACK /20 15 is, worden nu de volgende operaties uitgevoerd.At the seventh instruction, which the instruction with virtual opcode: 00060020; ADDSIACK / 20 is 15, the following operations are now being performed.

a) reg QlPCR) : = reg [PCR] b) reg [PCR) : = item jreg |OPER\ + OPCODE] c) reg (VHÜ : = @.r3a) reg QlPCR): = reg [PCR] b) reg [PCR): = item jreg | OPER \ + OPCODE] c) reg (VHÜ: = @ .r3

Toepassing, van deze operaties bij deze zevende instruktie geeft dan: 20 a) reg QlPCR} : = 00000005 b) reg \ PCR) : = item (7FOO + 00) reg [PCR) : = 00001000 c) reg 171¾ : = 00060020Application of these operations to this seventh instruction then gives: 20 a) reg QlPCR}: = 00000005 b) reg \ PCR): = item (7FOO + 00) reg [PCR): = 00001000 c) reg 171¾: = 00060020

Het verschil met de uitwerking van het eerste programma is nu dat in 25 het register VIR ten minste het locatiedescriptordeel van de inhoud van het instruktieregister wordt geladen. In dat instruktieregister bevond zich de instruktie met virtuele opcode die wordt behandeld.The difference with the elaboration of the first program is now that at least the location descriptor part of the contents of the instruction register is loaded into the register VIR. That instruction register contained the virtual opcode instruction being processed.

De achtste instruktie, opgeslagen op de geheugenplaats met adres 1000 luidt: 3fl FAQ27FFF; LOADVAL . RQ,-1-H-{R7)The eighth instruction, stored in the memory location with address 1000, is: 3fl FAQ27FFF; LOADVAL. RQ, -1-H- {R7)

Deze instruktie is identiek aan de achtste instruktie uit het eerste programma.This instruction is identical to the eighth instruction from the first program.

De negende instruktie, opgeslagen op de geheugenplaats 1001 luidt:The ninth instruction stored in memory location 1001 reads:

35 FA1FBQ00; LOADVAL R1,3 VIRFA1FBQ00; LOADVAL R1,3 VIR

In de locatiedescriptor "FB000" wijst de letter "F" erop dat het hier on een interpretatie-operatie handelt (figuur 5 (f)). Deze instruktie houdt dus in: "Laad in register R1 de betekenis van de locatiedescriptor c * Ü C ' i 3 PHN 11.228 24 van de instruktie welke in register B (VIR) is geladen".In the location descriptor "FB000", the letter "F" indicates that it is acting on an interpretation operation here (Figure 5 (f)). This instruction thus means: "Load in register R1 the meaning of the location descriptor c * Ü C 'i 3 PHN 11.228 24 of the instruction which is loaded in register B (VIR)".

In het register VIR staat nu de locatiedescriptor 60020. De evaluatie van deze locatiedescriptor levert het getal 20. Bijgevolg wordt er nu in het register R1 het woord "00000020" geschreven. Het resultaat van 5 deze negende instruktie is dus identiek aan het resultaat van de tiende instruktie uit het eerste programma zoals af geheeld in figuur 2. Het verschil tussen dat eerste en tweede computerprogramma en dus tussen de heide (figuur 1, figuur 6) registerarchitecturen is dus dat door gebruik te maken van het register VIR een instruktie kan worden gespaard (name-10 lijk de instruktie LQADVAL R1 ,-1+Qipcr} ). Het resultaat van deze instruktie (LQADVMj R1 ,-1 + [IPCR] ) wordt bij gebruik maken van de tweede register architectuur (figuur 6) reeds verkregen bij het decoderen van een instruktie met virtuele opcode (reg VIR : = jl.RT) ).The location descriptor 60020 is now in the register VIR. The evaluation of this location descriptor yields the number 20. Consequently, the word "00000020" is now written in the register R1. The result of this ninth instruction is therefore identical to the result of the tenth instruction from the first program as healed in figure 2. The difference between that first and second computer program and thus between the heath (figure 1, figure 6) is register architectures so that by using the register VIR an instruction can be saved (namely the instruction LQADVAL R1, -1 + Qipcr}). The result of this instruction (LQADVMj R1, -1 + [IPCR]) using the second register architecture (Figure 6) is already obtained when decoding an instruction with virtual opcode (reg VIR: = jl.RT)) .

Ter illustratie is nog in figuur 8 de verdere uitwerking van 15 het tweede computerprogramma zoals afgebeeld'in figuur 7 gegeven. Het verloop van deze uitwerking mag, gegeven de analogie met eerste computerprogramma, als duidelijk worden verondersteld.By way of illustration, figure 8 shows the further elaboration of the second computer program as shown in figure 7. Given the analogy with the first computer program, the course of this elaboration may be assumed to be clear.

20 25 3020 25 30

§ k Π 1 £ 9 Q§ k Π 1 £ 9 Q

3535

Claims (7)

1. Werkwijze voor het behandelen van machine gecodeerde instruk tiewoorden door middel van een dataprocessor voorzien van een geheugen voor het opslaan van genoemde instruktiewoorden die elk een opccdedeel en ten minste één operanddescriptordeel bevatten, welke opcodedelen be-5 horen tot een eindige verzameling die in een eerste en een tweede klasse is onderverdeeld, welke werkwijze de volgende stappen bevat: (a) ophalen onder besturing van de dataprocessor van een door een programmatellerstand aangewezen eerste instruktiewoord; (b) decoderen van het opcodedeel uit het eerste instruktiewoord en 10 onderzoeken tot dewelke der klassen het opcodedeel van het eerste instruktiewoord behoort; (c1) uitvoeren van de door het eerste instruktiewoord gegeven operaties voor instruktiewoorden met een opcodedeel behorende tot de eerste klasse; 15 (c2) voor instruktiewoorden met een opcodedeel behorende tot de tweede klasse uitvoeren de volgende stappen: (c2-1) opslaan van de momentane programmatellerstand in een daartoe voorbehouden supplementair progranmatellerregister; (c2-2) genereren, op basis van het opcodedeel uit het eerste 20 instruktiewoord, van een geheugenadres op hetwelk een tweede instruktiewoord is gelocaliseerd, welk tweede instruktiewoord de begininstruktie is van een reeks instruktiewoorden die de betekenis van het eerste instruktiewoord bepalen; (c2-3) stellen van de momentane programmatellerstand op genoemd 25 geheugenadres; (c2-4) behandelen van genoemde reeks instrukties; (c2-5) stellen van de momentane programmatellerstand op een waarde bepaald door de in het supplementair progranmatellerregister aanwezige programmatellerstand; 30 met het kenmerk, dat bij genoemde reeks van instruktiewoorden door ten minste één derde instruktiewoord het operanddescriptordeel uit het eerste instruktiewoord in een eerste indexregister wordt geladen.A method of treating machine-coded instruction words by means of a data processor provided with a memory for storing said instruction words each containing an edit part and at least one operand descriptor part, which code parts belong to a finite set contained in a first and second classes are divided, the method comprising the following steps: (a) retrieving under the control of the data processor a first instruction word indicated by a program counter; (b) decoding the coding part from the first instruction word and examining to which of the classes the coding part of the first instruction word belongs; (c1) performing the instruction word operations given by the first instruction word with a code part belonging to the first class; 15 (c2) for instruction words with a code portion belonging to the second class, perform the following steps: (c2-1) storing the current program counter in a dedicated program counter register reserved therefor; (c2-2) generating, based on the code portion from the first instruction word, a memory address to which a second instruction word is located, the second instruction word being the initial instruction of a series of instruction words determining the meaning of the first instruction word; (c2-3) setting the current program counter to said memory address; (c2-4) treating said set of instructions; (c2-5) setting the current program counter to a value determined by the program counter contained in the additional program counter register; 30, characterized in that in said series of instruction words the operand descriptor part is loaded from the first instruction word into a first index register by at least one third instruction word. 2. Werkwijze voor het behandelen van machine gecodeerde instruk tiewoorden door middel van een dataprocessor voorzien van een geheugen 35 voor het opslaan van genoemde instruktiewoorden die elk een opcodedeel en ten minste één operanddescriptordeel bevatten, welke opcodedelen behoren tot een eindige verzameling die In een eerste en een tweede klasse is onderverdeeld, welke werkwijze de volgende stappen bevat: «t < ·· · ’ - *» -i _ ' i ’ J · V *«r PHN 11.228 26 (a) ophalen onder besturing van de dataprocessor van een door een programmatellerstand aangewezen eerste instructiewoord ; (b) decoderen van het opcodedeel uit het eerste instruktiewoord en onderzoeken tot dewelke der klassen het opcodedeel van het eerste 5 instruktiewoord behoort; (c1) uitvoeren van de door het eerste instruktiewoord gegeven operaties voor instruktiewoorden net een opcodedeel behorende tot de eerste klasse; (c2) voor instruktiewoorden net een opcodedeel behorende tot de tweede 10 klasse uitvoeren de volgende stappen: (c2-1) opslaan van de momentane programmatellerstand in een daartoe voorbehouden supplementair programmatellerregister; (c2-2) genereren, op basis van het opcodedeel uit het eerste Instruktiewoord, van een geheugenadres op hetwelk een tweede 15 instruktiewoord is gelocaliseerd, welk tweede instruktie woord de begininstruktie is van een reeks instruktiewoorden die de betekenis van het eerste instruktiewoord bepalen; (c2-3) stellen van de momentane programmateller stand op genoemd geheugenadres; 2o (c2-4) behandelen van genoemde reeks instructies; (c2-5) stellen van de momentane progranmatellerstand op een waarde bepaald door de in het supplementair programmatellerregister aanwezige programmatellerstand; met het kenmerk,, dat voor instruktiewoorden met een opcodedeel behorende 25 tot de tweede klasse, ten minste het operanddescriptordeel van het eerste instruktiewoord in een daartoe voorbehouden tweede indexregister wordt geladen alvorens het stellen van de programmatellerstand op het geheugenadres.2. A method for handling machine-coded instruction words by means of a data processor provided with a memory 35 for storing said instruction words, each containing a code part and at least one operand descriptor part, which code parts belong to a finite set which In a first and a second class is divided, which method comprises the following steps: «t <·· · '- *» -i _' i 'J · V * «r PHN 11.228 26 (a) retrieval under the control of the data processor from a a program counter designated first instruction word; (b) decoding the code part of the first instruction word and examining to which of the classes the code part of the first instruction word belongs; (c1) performing the instruction word operations provided by the first instruction word with a code portion belonging to the first class; (c2) for instruction words with a code portion belonging to the second class, perform the following steps: (c2-1) storing the current program counter in a dedicated program counter register; (c2-2) generating, based on the coding portion from the first Instruction word, a memory address to which a second instruction word is located, the second instruction word being the initial instruction of a series of instruction words determining the meaning of the first instruction word; (c2-3) setting the current program counter position to said memory address; 2o (c2-4) deal with said set of instructions; (c2-5) setting the current program counter reading to a value determined by the program counter contained in the additional program counter register; characterized in that for instruction words having a coding part belonging to the second class, at least the operand descriptor part of the first instruction word is loaded into a dedicated second index register before setting the program counter value at the memory address. 3. Werkwijze volgens conclusie 1, met het kenmerk, dat bij de uitvoering van het derde instruktiewoord de inhoud van het supplementair 30 programmatellerregister wordt gebruikt voor het local iseren in het geheugen van het operanddescriptordeel uit het eerste instruktiewoord.3. Method according to claim 1, characterized in that in the execution of the third instruction word the contents of the additional program counter register are used for localizing in the memory of the operand descriptor part from the first instruction word. 4. Werkwijze volgens conclusie 1, 2 of 3, net het kenmerk, dat bij genoemde reeks van instruktiewoorden door ten minste één vierde instruktiewoord het operanddescriptordeel uit het eerste instruktiewoord 35 wordt verwerkt.Method according to claim 1, 2 or 3, characterized in that in said series of instruction words the operand descriptor part from the first instruction word is processed by at least one fourth instruction word. 5. Werkwijze volgens één der voorgaande conclusies, met het kenmerk, dat het genereren van het geheugenadres voor het tweede instructiewoord de volgende substappen bevat: 8 4 0 3 5 2 8 PHN 11.228 27 (1) vonten van een taheladres uit een geheugentabel door het bij het opccdedeel van het eerste instruktiewoord optellen van een waarde welke vooraf is opgeslagen In een daartoe voorbehouden operatie-extensieregister; 5 (2) adresseren van een geheugenwoord gelocaliseerd op het gevormde tafceladres; (3) ophalen van het geheugenwoord op genoemde tabeladres, welk geheugen-woord het geheugenadres vormt.Method according to any one of the preceding claims, characterized in that the generation of the memory address for the second instruction word comprises the following sub-steps: 8 4 0 3 5 2 8 PHN 11.228 27 (1) form a tahel address from a memory table by adding a value which has been previously stored in an operation extension register reserved for this purpose to the addition part of the first instruction word; (2) addressing a memory word located at the formed table address; (3) retrieving the memory word at said table address, which memory word constitutes the memory address. 6. Dataprocessor voorzien van een geheugen voor het opslaan van 10 machine gecodeerde instruktiewoorden, die elk een opcodedeel en ten minste één operanddescriptordeel bevatten, welke opcodedelen behoren tot een eindige verzameling die in een eerste en een tweede klasse is onderverdeeld, welke dataprocessor verder een programmatellerregister, een adresgenerator en een opcodedecodeur bevat, welke opcodedecodeur van 15 eerste middelen is voorzien cm opcodedelen van de eerste en de tweede klasse afzonderlijk te herkennen en van tweede middelen voor het onder controle van een herkend opcodewoord van de tweede klasse een stuursignaal te genereren, welke dataprocessor verder een supplementair programmatellerregister en overdrachtsmiddelen bevat, welke overdrachts-20 middelen een eerste stuuringang hebben voor het ontvangen van het stuursignaal en verder voorzien zijn voor het onder besturing van een ontvangen stuursignaal overbrengen van de inhoud van het prograirmateller-register naar het supplementair programmatellerregister, en waarbij de adresgenerator voorzien is voor het onder controle van het stuursignaal 25 genereren van een geheugenadres op hetwelk een begininstruktiewoord van een reeks instruktiewoorden voor het behandelen van een descriptordeel is gelocaliseerd, met het kenmerk, dat de dataprocessor voorzien is van een operatie-extens reregister dat een tweede stuuringang voor het ontvangen van het stuursignaal bevat en een uitgang heeft die verbonden 3{J is met de adresgenerator.6. Data processor provided with a memory for storing 10 machine-coded instruction words, each containing a code part and at least one operand descriptor part, which code parts belong to a finite set divided into a first and a second class, which data processor further comprises a program counter register , an address generator and a coding decoder, which coding decoder is provided with first means for separately recognizing coding parts of the first and the second class and of second means for controlling a recognized coding word of the second class to generate a control signal which the data processor further includes a supplementary program counter register and transfer means, the transfer means having a first control input for receiving the control signal and further provided for transferring the contents of the program counter register under the control of a received control signal. Supplementary program counter register, and wherein the address generator is provided for generating, under control of the control signal, a memory address at which an initial instruction word of a series of instruction words for treating a descriptor part is located, characterized in that the data processor is provided with an operation -extension register which contains a second control input for receiving the control signal and has an output connected to the address generator. 7. Dataprocessor volgens conclusie 6, met het kenmerk, dat de dataprocessor verder voorzien is van een tweede indexregister dat een derde stuuringang voor het ontvangen van het stuursignaal bevat en een data-ingang verbonden met het geheugen voor het ontvangen van het 35 operanddescriptordeel van een instruktiewoord onder besturing van het stuursignaal. $ ά Λ ~ ·» O *' *- Si v.. v7. Data processor according to claim 6, characterized in that the data processor further comprises a second index register containing a third control input for receiving the control signal and a data input connected to the memory for receiving the operand descriptor part of a instruction word under control of the control signal. $ ά Λ ~ · »O * '* - Si v .. v
NL8403628A 1984-01-16 1984-11-29 Processing of machine code instructions - using instructions with two part operation code, first being of normal structure and second acting as virtual operation code NL8403628A (en)

Priority Applications (6)

Application Number Priority Date Filing Date Title
NL8403628A NL8403628A (en) 1984-11-29 1984-11-29 Processing of machine code instructions - using instructions with two part operation code, first being of normal structure and second acting as virtual operation code
DE19853500377 DE3500377A1 (en) 1984-01-16 1985-01-08 METHOD FOR PROCESSING MACHINE-CODED COMMANDS AND DATA PROCESSOR BY IMPLEMENTING THE METHOD
CA000471845A CA1232075A (en) 1984-01-16 1985-01-10 Method of handling machine-coded instruction words and data processor for carrying out the method
GB08500682A GB2153561B (en) 1984-01-16 1985-01-11 Handling machine-coded instruction words
SE8500156A SE8500156L (en) 1984-01-16 1985-01-14 PROCEDURE FOR PROCESSING MACHINE-CODED INSTRUCTION WORDS AND DATA PROCESSOR FOR EXECUTING THE PROCEDURE
FR8500513A FR2573228A1 (en) 1984-01-16 1985-01-15 PROCESS FOR PROCESSING INSTRUCTION WORDS MACHINE AND COMPUTER CODES FOR EXECUTING THE PROCESS

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NL8403628A NL8403628A (en) 1984-11-29 1984-11-29 Processing of machine code instructions - using instructions with two part operation code, first being of normal structure and second acting as virtual operation code
NL8403628 1984-11-29

Publications (1)

Publication Number Publication Date
NL8403628A true NL8403628A (en) 1986-06-16

Family

ID=19844830

Family Applications (1)

Application Number Title Priority Date Filing Date
NL8403628A NL8403628A (en) 1984-01-16 1984-11-29 Processing of machine code instructions - using instructions with two part operation code, first being of normal structure and second acting as virtual operation code

Country Status (1)

Country Link
NL (1) NL8403628A (en)

Similar Documents

Publication Publication Date Title
US7421686B2 (en) Program code conversion
JP4994580B2 (en) System and method for using tagged types in a dynamic runtime environment
JP3377419B2 (en) Instruction string generation method and apparatus, conversion method, and computer
JP3280449B2 (en) Compiling device
JP5530449B2 (en) Modular forest automaton
JPH01201729A (en) Decoding
JPS6149242A (en) Optimization compiler
US6658655B1 (en) Method of executing an interpreter program
US6029005A (en) Method for identifying partial redundancies in a new processor architecture
US7299460B2 (en) Method and computer program for converting an assembly language program for one processor to another
NL8403628A (en) Processing of machine code instructions - using instructions with two part operation code, first being of normal structure and second acting as virtual operation code
US5694605A (en) Program translator with selective data value amendment and processor with data extension instructions
CN114816436A (en) Source code analysis device based on disassembling
US6934941B2 (en) Compiler for generating risc object code whereby operations on bit variables written in source code are executed by processing based on bit judgement operations to thereby reduce the amount of object code
WO2000070526A1 (en) Efficient coding in processors
GB2153561A (en) Handling machine-coded instruction words
NL8400129A (en) METHOD FOR PROCESSING MACHINE-CODED INSTRUCTION WORDS, AND DATA PROCESSOR FOR PERFORMING THE METHOD
EP0244928A1 (en) Improvements relating to control flow in computers
Kumar et al. Revolutionizing Compilation: Lexical Analysis Approaches for Parallel Multi-Core Processing
JP4032822B2 (en) Address description conversion system and program for assembler program
Handout Processor Architectures
Ranger The portability of BCPL to the MC68000 via the intermediate language SLIM
JPH06282443A (en) Method and device for editing program
JPH06168140A (en) Program converter
JPH0573333A (en) Function name converter

Legal Events

Date Code Title Description
BV The patent application has lapsed