NL8403628A - Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze. - Google Patents

Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze. 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
English (en)
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/nl
Priority to DE19853500377 priority patent/DE3500377A1/de
Priority to CA000471845A priority patent/CA1232075A/en
Priority to GB08500682A priority patent/GB2153561B/en
Priority to SE8500156A priority patent/SE8500156L/xx
Priority to FR8500513A priority patent/FR2573228A1/fr
Publication of NL8403628A publication Critical patent/NL8403628A/nl

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)

Description

* -. s PHN 11.228 1 N.V. Philips' Gloeilampenfabrieken te Eindhoven
Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze.
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.
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 opcodedeel
O
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.
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 Λ
* * 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.
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.
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.
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.
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.
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 alvorens
A ?, ' - ^ O Q
e 3
•N
PHN 11.228 4 het geheugenadres te genereren, kunnen programma-instrukties uit genoemde reeks instruktiewoorden worden gespaard.
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.
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.
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.
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.
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.
De uitvinding heeft ook betrekking op een dataprocessor voor-
a Π " > 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.
Zo’n dataprocessor is eveneens bekend uit het reeds genoemde 20 artikel "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.
25 Hierdoor kan op eenvoudige wijze de adresgenerator worden gerealiseerd wanneer het operatie-extensieregister een verzameling adressen of adresdelen bevat.
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.
Hierdoor kunnen bovendien programma-instrukties worden gespaard.
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.
Figuur 1a de werkwijze volgens de uitvinding schematisch e'4C.' e 2e * ï PHN 11.228 6 illustreert aan de hand van een stroomdiagram.
Figuur 2 een eerste computerprogramma laat zien aan de hand van hetwelke een eerste uitvoeringsvorm van de werkwijze volgens de uitvinding wordt geïllustreerd.
g Figuur 3 (I tot en met VI) het resultaat van een afhandeling van het coirputerprogramma uit figuur 2 laat zien.
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.
Figuur 6 een tweede uitvoer ings voor beeld van een register-architectuur van een computersysteem volgens de uitvinding laat zien.
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.
Figuur 8 (I tot en net V) het resultaat van een afhandeling van het computerprogramma uit figuur 7 laat zien.
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).
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 van
§ λ Π Λ λ 0 O
ύ -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.
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.
Eten conputersysteem volgens de uitvinding bevat een centrale verwerkingseenheid (CPU), met bijvoorbeeld een registerarchitectuur.
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.
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.
54-..:3 28 PHN 11.228 8
ï 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.
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.
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)
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.
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 + opcode
Hierbij wordt het nieuwe adres direkt bepaald zonder dat er een leesoperatie uit het geheugen plaats heeft.
10 b) Reg [pcr) I = opcode + vast adres
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.
15 c) Reg [pcr] : = mem [opcode + vast adres]
Ook bij deze handeling wordt geen gebruik gemakt van het 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)
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.
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.
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 10
Hierbij wordt de inhoud van ten minste het locatiedescriptordeel van het instruktieregister [j.R^ van het computersysteem in het register VIR overgeschreven.
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.
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.
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).
De derde en de vierde kolom bevat de instrukties geschreven in "Assembly language" en de vijfde kolom bevat commentaar bij de instruktie.
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.
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.
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 het
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.
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.
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.
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".
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.
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.
* /. 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.
(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.
(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.
(c) In figuur 5(c) staat het woord "0010" voor een indexoperatie ge-precedeerd door een aanpassingsoperatie (pre-adjust indexed).
Zo'n operatie verloopt in twee stappen: het adres gegeven door 20 a + Reg [η] en tevens
Reg [η] : = a + Reg (nl (a en n hebben dezelfde betekenis als hiervoor geciteerd).
(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).
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.
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.
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).
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.
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).
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.
De derde instruktie luidt: * ' Λ *’ 2- Ό *Λ V 'w * PHN 11.228 14 FE018400; JSR $400+(ZEROR] (figuur 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) : = 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.
De vierde instruktie, gelocaliseerd op geheugenplaats met 25 adres 400 luidt: FA03B001; LOADVAL R0,[PCR]++1 7FfFFFFF: $7FFFFFFF (figuur 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:
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 verhoog
o Λ '* - -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 : = 402
De vijfde instrukfcie, gelocaliseerd op geheugenplaats met 402, luidt: 10 FAB2DFFF; LQADVAL PCR,-1-H-[SPR) (figuur 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 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.
De zesde instruktie luidt dan: FA742000; LOADVAL R7,#$20QQ (figuur 3(II), instr. 6).
Deze instruktie houdt in: "Laad in het register R7 het getal met waarde 30 2000".
De zevende instruktie luidt: 00040020; ADDSTACK #$20 (figuur 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 16
Toepassing van deze operaties bij deze zevende instruktie geeft dan: 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.
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.
De achtste instruktie, opgeslagen op de geheugenplaats met 25 adres 1000 luidt: FA027FFF; LOADVAL R0,-1++(¾¾ (figuur 3(11), instr. 8).
Deze instruktie houdt de volgende operaties in: a) Reg QÖ :=-1+ reg (Y)
Reg 0 : = -1 + 2000
30 Reg C3 : = 1FFF
b) Reg Cd] : = mem [reg 0)
Reg [cQ : = mem [jFFÈ]
Reg lef) : = 00000000
Op geheugenplaats met adres 1FFF staat de waarde 00000000.
35 Deze operaties stellen in feite een "POP"-operatie voor toegepast op register R7, die de rol van stapelwijzer vervult.
De negende instruktie luidt: FA11CFFF; LOADVAL R1,-1 + CiP0r) (figuur 3(11), instr. 9).
3 4 V O ü ί O
PHN 11.228 17
Deze instruktie houdt de volgende operatie in:
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.
10 De tiende instruktie luidt: FA1F1000; LOADVftL R1,9R1 (figuur 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.
De elfde instruktie luidt: FD001000; DYADIC ADD R0,R1 (figuur 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 fjj
Reg [Ö3 : = 00000000 + 00000020 Reg OÖ : = 00000020"
De twaalfde instruktie luidt: FB037001; STORE R0,jR7)-H-1 (figuur 3(III), instr. 12).
35 Deze instruktie houd de volgende operaties in: a) mem jlreg jjzf) : = reg [cf) mem ijEEF} : = 20
Dus op geheugenplaats met adres 1FFF wordt het getal 20 geschreven.
> ,, '· 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.
De dertiende instruktie luidt: FAB0G000; LQADVAL PCR,IPCR (figuur 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.
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.
De veertiende instruktie, gelocaliseerd op geheugenplaats met adres 5 luidt: 00018100; ADDSTACK $100+[zerOR} (figuur 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] : = 00001000
De vijftiende instruktie, gelocaliseerd op geheugenplaats met adres 1000 luidt: FA027FFF; LOADVAL R0,-1++(¾¾ (figuur 3 (III) , instr. 15).
3q Deze instruktie houdt de volgende operaties in:
a) reg 0Q :=-1+ reg jj] reg ijJ :=-1 + 2000 reg [7} : = 00001FFF
b) reg [oj : = mem [reg (~7~f) 35 reg βΟ : = mem JjFFF) 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.
34 0 5 6 28 PHN 11.228 19
De zestiende instruktie luidt: FA11CFFF; LOADVAL R1 ,-1+£EFCR] (figuur 3 (IV), instr. 16).
Deze instruktie houdt de volgende operaties in:
Reg Q3 : - item [y1 + reg (IFCR}) 5 Reg Ij] : = item Γ-1 + 6}
Reg 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).
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)]
Keg Q] : = mem [l00 + 5)
Reg 03 : = mem Qoo}
Reg 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.
De acntiende instruktie luidt: FD001000; DYADIC ADD R0,R1 (figuur 3(IV), instr. 18).
25 Deze instruktie houdt de volgende operatie in:
Reg {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.
De negentiende instruktie luidt: FB037001; STORE R0,(R7]-h-1 (figuur 3(IV), instr. 19).
wat de volgende operatie inhoudt: a) mem [reg Cu) : = Reg [O)
35 mem (jFFF} : = Reg QQ
item 0FFÊ1 : = 00000000 b) Reg L7j : = Reg |j3 + 1 Reg [7j : = 1EEF + 1 ** .*%·*. ' _ Λ * \ * PHN 11.228 20
Reg [i] : = 00002000
De twintigste instruktie luidt: FAB0C000; LOADVAL PCR,IPCR (figuur 3 (IV), instr. 20).
wat de volgende operaties inhoudt: 5 Reg [PCR) : = Reg flPCR}
Reg [Ρθή : = 00000006
Dus opnieuw de eindins trukt ie waarmee een reeks instrukties ingeleid door een virtuele opcode wordt afgesloten.
De éénentwintigste instruktie luidt: 10 01018101; ORSTACK $101+[ZERO^ (figuur 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)
Reg (ÏPCÖ : = 00000007 15 b) Reg QpCR) : = item [reg jOPER) + OPCODE)
Reg [PCR] : = mem [7F00 + OÏ)
Reg (j?CRj : = item [7F0f)
Reg [PCR] : = 00001010 (zie figuur 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.
De tweeëntwintigste, instruktie, gelocaliseerd op geheugen-25 plaats met adres 1010 luidt: FA027FEF; LOADVAL R0,-1++(¾] (figuur 3(IV), instr. 22).
Deze instruktie omvat de volgende operaties: a) Reg jjD : = mem (j-1 + Reg CQ]
Reg Ld) : = mem Q-1 + 2000} 30 Reg tol 5 = mem (JFFF}
Reg [cf] : = 00000000 (zie hiervoor instruktie 19) b) Reg Cf) : = -1 + Reg (7)
Reg [7) : = 00001FFF
De drieëntwintigste instruktie luidt: 35 FA11CFFF; LOADVAL R1,-1+(ÏPCr) (figuur 3(V), instr. 23).
Deze instruktie omvat de volgende operatie:
Reg Q]: = mem f1 + Reg (jPCiJ)
Reg Qf) : = rrem ljj-1 + ^ 8403628 V " * ΡΗΝ Π.228 21
Reg j"3: = 11)0111 Ü? J Reg 0j : = 01018101
De vierentwintigste instruktie luidt: FA1F1000; LOADVSL R1/2R1 (figuur 3(V), instr, 24).
5 De locatiedescriptor van de instruktie in register 1 ongeslagen bevat "18101". Dit houdt als operatie in:
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).
In deze instruktie wijst het cijfer "6" op een logische "OF"-operatie.
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.
20 De zesentwintigste instruktie luidt: FB037001; STORE R0,[R7}-H-1 (figuur 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) + 1
Reg tj3 : = 1FEF + 1 Reg : * 2000
De zevenentwintigste instruktie luidt: FAB0C000; LOADVAL PCR,IPCR (figuur 3(VI), instr. 27).
30 wat inhoudt:
Reg [PCr3 : = Reg (ÏpCR)
Reg [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.
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.
5 b) Het behandelen van de locatiedescriptor bij een Instruktie met virtuele 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).
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.
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.
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.
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.
Bij de zevende instruktie, welke de instruktie met virtuele opcode: 00060020; ADDSIACK /20 15 is, worden nu de volgende operaties uitgevoerd.
a) 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¾ : = 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.
De achtste instruktie, opgeslagen op de geheugenplaats met adres 1000 luidt: 3fl FAQ27FFF; LOADVAL . RQ,-1-H-{R7)
Deze instruktie is identiek aan de achtste instruktie uit het eerste programma.
De negende instruktie, opgeslagen op de geheugenplaats 1001 luidt:
35 FA1FBQ00; 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 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) ).
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.
20 25 30
§ k Π 1 £ 9 Q
35

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.
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.
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.
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.
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.
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.
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.. v
NL8403628A 1984-01-16 1984-11-29 Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze. NL8403628A (nl)

Priority Applications (6)

Application Number Priority Date Filing Date Title
NL8403628A NL8403628A (nl) 1984-11-29 1984-11-29 Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze.
DE19853500377 DE3500377A1 (de) 1984-01-16 1985-01-08 Verfahren zur bearbeitung maschinencodierter befehlswoerter und datenprozessor durch durchfuehrung des verfahrens
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 (sv) 1984-01-16 1985-01-14 Forfarande for behandling av maskinkodade instruktionsord och dataprocessor for utforande av forfarandet
FR8500513A FR2573228A1 (fr) 1984-01-16 1985-01-15 Procede pour le traitement de mots d'instruction codes machine et ordinateur pour l'execution du procede

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
NL8403628 1984-11-29
NL8403628A NL8403628A (nl) 1984-11-29 1984-11-29 Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze.

Publications (1)

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

Family

ID=19844830

Family Applications (1)

Application Number Title Priority Date Filing Date
NL8403628A NL8403628A (nl) 1984-01-16 1984-11-29 Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze.

Country Status (1)

Country Link
NL (1) NL8403628A (nl)

Similar Documents

Publication Publication Date Title
EP1119807B1 (en) Program code conversion
JP4994580B2 (ja) 動的ランタイム環境でタグ付き型を用いるシステム及び方法
JP3280449B2 (ja) コンパイル装置
JP5530449B2 (ja) モジュラフォレストオートマトン
US6658655B1 (en) Method of executing an interpreter program
NL8403628A (nl) Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze.
US5694605A (en) Program translator with selective data value amendment and processor with data extension instructions
US5506974A (en) Method and means for concatenating multiple instructions
US20020042695A1 (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
GB2153561A (en) Handling machine-coded instruction words
Kumar et al. Revolutionizing Compilation: Lexical Analysis Approaches for Parallel Multi-Core Processing
NL8400129A (nl) Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze.
EP0244928A1 (en) Improvements relating to control flow in computers
JP4032822B2 (ja) アセンブラプログラムのためのアドレス記述変換システム及びプログラム
Handout Processor Architectures
Ranger The portability of BCPL to the MC68000 via the intermediate language SLIM
JPH06282443A (ja) プログラム編集方法と装置
JPH06168140A (ja) プログラム変換装置
JPH0573333A (ja) 関数名変換装置
JPH06236282A (ja) データ型サイズ可変なコンパイラ、およびインタプリタ
JPH03134735A (ja) マイクロプログラム翻訳処理方法
JPH05120028A (ja) マイクロコンピユータ装置
JPH03282622A (ja) 情報処理装置
JPH0440528A (ja) プログラム翻訳装置

Legal Events

Date Code Title Description
BV The patent application has lapsed