NL8400129A - 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
NL8400129A
NL8400129A NL8400129A NL8400129A NL8400129A NL 8400129 A NL8400129 A NL 8400129A NL 8400129 A NL8400129 A NL 8400129A NL 8400129 A NL8400129 A NL 8400129A NL 8400129 A NL8400129 A NL 8400129A
Authority
NL
Netherlands
Prior art keywords
instruction
reg
memory
register
word
Prior art date
Application number
NL8400129A
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 NL8400129A priority Critical patent/NL8400129A/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
Priority to JP60005627A priority patent/JPS60159945A/ja
Publication of NL8400129A publication Critical patent/NL8400129A/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

« « ' 9 PHN 10.909 1 N.V. Philips' Gloeilampenfabrieken te Eindhoven
Werkwijze voer het haandelen van machine gecodeerde instructiewoorden, en dataprocesscr voer het uitvoeren van de werkwijze.
De uitvinding heeft betrekking op een werkwijze voor het behandelen van machine gecodeerde instruktiewoerden door middel van een dataprocesscr voorzien van een geheugen voor het opslaan van genoemde instruktiewoarden die elk een opcodedeel en ten minste één qperand-5 descriptordeel bevatten, welke opcodewocrden behoren 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 dataprocesscr van een door een pro-granoatel.lerstand aangewezen eerste instruktiewoard; Μ (b) decoderen van het opcodedeel uit het eerste instruktiewoard; (c) uitvoeren van de door het instruktiewoard gegeven operaties.
Een dergelijke werkwijze wordt in de bekende dataprocessor-systaemen (ook wel computersystemen genaamd) gébruikt. De machine gecodeerde instruktiewoerden zijn het resultaat van vertalingsprocedures die IS zijn toegepast op een door een programmeur aangeboden progranmatekst.
De progranmatekst is geschreven in een bekende computertaal zoals bijvoorbeeld PASCAL of FORERAN. De cccpiler si de assembler van het computersysteem vertalen de progranmatekst naar een stelsel van machine gecodeerde instruktiewoerden die dan tijdens de behandeling van de 2Q progranmatekst in het geheugen werden cpgeslagen. Een instruktiewoard is bijvoorbeeld 32 bits treed. Hiervan zijn dan bijvoorbeeld 8 bits bestemd voor het opcodedeel en 20 bits voer het eperanddeseriptcrdael.
Bij een 8-bits treed opcodedeel bevat een verzameling van opcodes 8 maximaal (2 =) 256 verschillende opcodes. Deze verzameling kan op 25 meerdere wijzen in twee klassen werden onderverdeeld, afhankelijk van de aard van de verdere operaties die te verrichten zijn. De inhoud van het opcodedeel is bepalend voor de aard van de te verrichten operatie (s) voor het afhandelen van de instruktie. Zo kan een opcode bijvoorbeeld een registerladingscperatie of een sprang naar een subroutine aanduiden.
3q Hét decoderen heeft tot doel het opcodedeel in stuur informatie voor het computer systeem om te zetten. De volgorde waarin de instruktiewoar-den door de dataprocesscr uit het geheugen worden opgehaald en behandeld wordt aangeduid door de progranmateller stand.
8400129 • f J* I * l " Λ FHN 10.909 2
In de bekende conputersystemen hebben de opcodedelen uit genoemde verzameling een vaste betekenis die bij het decoderen vrordt herkend. Een opcodedeel met vaste betekenis wordt na het decoderen volgens een welbepaald aantal stappen uitgevoerd. Afhankelijk van de 5 capaciteit van het computersysteem bevat de verzameling veel of weinig verschillende elementen. De systeemprograitmeur moet werken met de . gegeven verzameling van opcodes en de vaste betekenis die het computersysteem tijdens het decoderen daaraan geeft. Bezit het systeem geen passende opcode voor het uitvoeren van een gewenste operatie dan zal 10 deze operatie via meerdere instruktiewoorden moeten worden omschreven, al dan niet gebundeld in een subroutine. De vaste verzameling van opcodes schept dus dikwijls problemen voor de systeemprogrammeur, die dan een oplossing zoekt in het gebruik van bijzondere subroutines "run-time routines" genaamd. Echter hebben subroutines het nadeel dat zij extra 15 executietijd vergen vanwege de geheugenoperaties voor het opslaan en terughalen van de programnatellers tand. Ook is bij gebruik van sub-routines het descriptordeel van het instruktiewoord dat de subroutine aanroept alleen bruikbaar om een nieuwe stand van de programmateller aan te geven, en dus niet beschikbaar voor. codering van operanddescriptoren. 20 De uitvinding beoogt een werkwijze voor het behandelen van machine gecodeerde instruktiewoorden te realiseren, waarbij er slechts weinig opcodedelen een vaste betekenis hebben en waarbij aan de systeemprogrammeur de vrijheid wordt geboden voor de keuze van de betekenis van de overige opcodedelen. Verder beoogt de uitvinding, een werkwijze te 25 realiseren waarbij ook voor hogere programmeertalen een hogere efficiëntie wordt verkregen.
Een werkwijze vólgens de uitvinding heeft daartoe het kenmerk, dat bij het decoderen wordt onderzocht tot dewelke der klassen het opcodedeel van het eerste instruktiewoord behoort en dat voor instruktie-30 woorden met een opcodedeel behorende tot de tweede klasse het uitvoeren de volgende stappen bevat: (c1) opslaan van momentane prograirmatellerstand in een daartoe voorbehouden supplementair progranmatellerregister ; (c2) genereren, op basis van het opcodedeel uit het eerste instruktie-35 wx>rd, van een geheugenadres op hetwelke een tweede instruktie woord is gelocaliseerd, welke tweede instruktiewoord de beginin-struktie is van een reeks instruktiewoorden die de betekenis van het eerste instruktiewoord bepalen; 8400129 .
PHN 10.909 3 » · (c3) stellen van de momentane programmatellerstand op genoemde geheugen-adres; (c4) behandelen van genoende reeks instrukties; (c5) stellen van de momentane progranmatellerstand op een waarde bepaald S door de in het supplementair programnatellerregister aanwezige programnatellerstand.
Het opslaan van de momentane programnatellerstand in een supplementair programnatellerregister heeft tot gevolg dat hiervoor geen schrijf operatie in het geheugen noodzakelijk is, zoals dit het geval is bij een 10 sufcrcutine-instruktie. Hierdoor wordt dan bewerkingstijd gespaard. Verder hebban de opcodedelen van de eerste klasse een vaste betekenis. Een instruktiewocrd met opcodedeel boerende tot de tweede klasse wnrdt nu behandeld volgens de genoemde deelstappen. Het opcodedeel uit de tweede klasse wordt nu gebruikt als basis voor het genereren van een geheugen-15 adres waarop een tweede instruktiewocrd is gelocaliseerd. De systeem-prograttmeur heeft dus alle vrijheid wat betreft het invullen van de betekenis van de opcodes van de tweede klasse. Deze betekenis vordt verder uitgewerkt in de reeks instrukties ingeleid door het tweede in-struktiewoard. Verder heeft de systeenprogramneur de mogelijkheid om te 20 verwerken informatie in het descriptordeel op te slaan, welke informatie dan door genoemde reeks van instruktiewoorden wordt verwerkt.
Voer het genereren van het geheugenadres voor het tweede in-struktiewoord, op basis van het opcodedeel uit het eerste instruktie-woard zijn er meerdere mogelijkheden.
25 Een eerste mogelijkheid heeft het kenmerk, dat het geheugen adres wordt gegenereerd door bij het opcodedeel een vaste vaarde op te tellen. Dit is een eenvoudige mogelijkheid waarbij er weinig extra hardware middelen noodzakelijk zijn.
Een tweede mogelijkheid heeft het kenmerk, dat het geheugen-30 adres wordt gegenereerd door bij het opcodedeel eèn waarde op te tellen welke vooraf is opgeslagen in een daartoe voorbehouden operatie-extens ie-register. Door gebruik te maken van een eperatie-extens ieregister kan per executerend programna een gespecialiseerde instruktieverzamsling warden aangeboden.
35 Een derde mogelijkheid heeft het kenmerk, dat het genereren van het geheugenadres voor het tweede instruktiewocrd de volgende subr stappen bevat: (1) vannen van een tabeladres uit een geheugentabel door het optellen 8400129 \ * * * PHN 10.909 4 van een vaste waarde bij het opcodedeel van het eerste instruktie-woord; (2) adresseren van een geheugenwoord gelegaliseerd op het gevormde tabeladres; 5 (3) ophalen van het geheugenwoord op genoemde tabeladres, welk geheugen- woord het geheugenadres vormt.
Een vierde mogelijkheid heeft het kenmerk, dat het genereren van het geheugenadres voor het tweede instruktiewoord de volgende sub-stappen bevat: 10 (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-extens ieregister; (2) adresseren van een geheugenwoord gelocaliseerd op het gevormde tabel-15 adres; (3) ophalen van het geheugenwoord op genoemde tabeladres, welk geheugen-woord het geheugenadres vormt.
Het gebruik van een geheugentabel biedt de mogelijkheid cm een inventarisatie te maken van de gespecialiseerde instruktieverzamelingen.
20 Een voorkeursuitvoeringsvorm van een werkwijze volgens de uitvinding heeft het kenmerk, dat bij genoemde reeks van instruktie-woorden door ten minste één derde instruktiewoord het descriptordeel uit het eerste instruktiewoord in een register wordt geladen. Het laden van het descriptorwoord in een verwerkingsregister maakt een eenvoudige 25 behandeling mogelijk, omdat dan de bestaande hardware voor het decoderen van dat descriptordeel kan worden gebruikt.
Een verdere voorkeursuitvoeringsvorm van een werkwijze volgens de uitvinding heeft het kenmerk, dat bij genoemde reeks van instruktie-woorden door ten minste één vierde instruktiewoord het descriptordeel 30 uit het eerste instruktiewoord wordt verwerkt. Het descriptordeel van het eerste instruktiewoord dat is opgeslagen in een register wordt door middel van het vierde instruktiewoord behandeld. Het descriptordeel van een instruktiewoord met virtuele opcode wordt aldus gebruikt voor de codering van operanddescriptoren.
35 De uitvinding heeft ook betrekking op een dataprocessor voor 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 84 0 0 1 2 9 PHN 10.909 5 een tweede klasse is onderverdeeld, welke dataprocessar verder een programnatellerregister, een adresgenerator en een opcadedecodeur bevat. Zoals reeds vermeld zijn zulke dataprocessaren algemeen bekend.
Een dataprocessar volgens de uitvinding heeft het kenmerk, dat S de cpoodedecodeur van eerste middelen is voorzien cm opcodedelen van de eerste en de tweede klasse afzonderlijk te herkennen ai van tweede middelen voor het onder controle van een herkend opcodewoord van de tweede klasse een stuursignaal, te genereren, welke dataprocessar verder een supplementair programmatellerregister en overdrachtsmiddelen bevat, 10 welke overdrachtsmiddelen een eerste stuuringang hebben voor het ontvangen van het stuursignaal en verder voorzien zijn voor het onder besturing van een ontvangen stuursignaal overhrengen van de inhoud van het progranmatellerregister naar het supplementair progranmatellerre-gister, en waarbij de adresgeneratar voorzien is voor het onder controle 15 van het stuursignaal genereren van een geheugenadres op hetwelke een begininstruktiewoard van een reeks instruktiewoorden voor het behandelen van een descriptordeel is gelocaliseerd. Het gebruik van zo'n dataprocessar naakt de toepassing van een werkwijze volgens de uitvinding mogelijk.
20 Het is gunstig dat de dataprocessar verder voorzien is van een cperatie-extensieregister dat een tweede stuuringang voor het ontvangen van het stuursignaal bevat en een uitgang verbonden met de adresgenerator bevat.
De uitvinding zal nader warden beschreven aan de hand van de 25 tekening waarin:
Figuur 1 een uitvoeringsvoarbeeld van een registerarchitectuur van een dataprocesscr volgens de uitvinding laat zien.
Figuur 1a de werkwijze volgens de uitvinding schematisch illustreert aan de hand van een stroomdiagram.
30 Figuur 2 een conputerprogramaa laat zien aan de hand van het welke de werkwijze volgens de uitvinding wordt geïllustreerd.
Figuur 3 (I tot en met VI) het resultaat van een afhandeling van het computerprogramma uit figuur 2 laat zien.
Figuur 4 (a tot en met f) enkele verschillende opcodes en hun 35 bijbehorende instruktiewoordindeling laat zien, en
Figuur 5 (a tot en met f) enkele verschillende descriptor delen binnen een instruktiewoord laat zien.
Een dataverwerkend systeem of een computer die een opdracht 8400129 PHN 10.909 6 ih * I v “ < moet verwerken zal dit doen door het afhandelen van een programma dat 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 5 door de computer in machine gecodeerde instrukties worden vertaald teneinde het programma te behandelen. Dat vertalen van gebruikerstaal naar machine gecodeerde instrukties geschiedt meestal in twee stappen. Een eerste stap bevat het vertalen van gebruikerstaal naar "Assembly language" en een tweede stap bevat het vertalen van "Assembly language" 10 naar "machine-instrukties". De eerste stap wordt door een "compiler" en de tweede door een "assembler" behandeld. De compiler ai de assembler zijn beide vertaalprogramma's die deel uitmaken van het computersysteem. De systeemprogrammsur heeft bij het maken van de compiler en de assembler rekening gehouden met de architectuur van de computer (CA = 15 Computer Architectuur, dat wil zeggen het aanzien van de machine vanuit het gezichtspunt van de systeemprogrammeur).
In Computer Architectuur wordt onder meer een onderscheid gemaakt tussen twee types architectuur, namelijk HLL (High Level Language) en RISC (Reduced Instruction Set Computers) architectuur. HLL-architec-20 tuur houdt in hoofdzaak in dat de computer hardware wordt voorzien van 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 25 kan halen. Echter is bij RISC-architectuur de vertaling van een ge-hruikersprograrana aanzienlijk moeilijker.
De voordelen van deze twee genoemde types van computer architectuur worden nu gecombineerd in een dataverwerkend systeem vólgens de uitvinding. Zo'n dataverwerkend systeem bevat in feite een eenvoudige 30 machine waarvan de instruktieset uitbreidbaar wordt gemaakt teneinde efficient HLL-type operaties te kunnen behandelen.
Een computersysteem volgens de uitvinding bevat een centrale verwerkingseenheid (CPU), met bijvoorbeeld een registerarchitectuur. Figuur 1 laat een uitvoeringsvoorbeeld van een registerarchitectuur van 35 een computersysteem volgens de uitvinding zien. De register Rq tot en met Ry evenals de register ZEROR(8), ONER(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 8400129 PHN 10.909 7 bekende register van een computer net een conventionele registerarchi-tectuur. De registers IPCR (Interpreter Program Counter Register) (C) en OPER (Operation Extend Registers) (A) vormen een toevoeging van de CPU waarmede een register architectuur wordt uitgetreïd voor toepas-5 sing van de uitvinding, waarbij er echter dient te warden opgemerkt dat het register QFER optioneel is. In de meest eenvoudige uitvoering kan warden volstaan met het register IPCR. Het gebruik van het register IPCR door het computersysteem tijdens de behandeling van een progranma wordt gestuurd door het OPOOOEDEEL van een te behandelen instruktiewoord, of 10 kortweg, de OPCODE (Operation Code) genoemd.
In dit computersysteem warden de OPCODES in twee klassen onderverdeeld, namelijk een eerste klasse die "normale" opcodes bevat en een tweede klasse die "virtuele" opcodes bevat. De opcodedecodeur van het ccnputersysteem is zodanig geïmplementeerd dat deze aan het bit-15 patroon van de opcodes herkent tot welke klasse deze behoort. Zo kunnen bijvoorbeeld alle opcodes die als meest-signifikante bits (MSB) de waarde "0" hebben als "normale" opcodes werden herkend en alle opcodes die als MSB de waarde "1" hebbel als "virtuele" opcodes warden herkend. Hierdoor ontstaat een verdeling waarbij elke klasse evenveel opcodes 20 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-25 code door een computersysteem volgens de uitvinding warden 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.
30 In het geval dat de opcodedecodeur een opcode behorende tot de klasse van normale opcodes heeft gedecodeerd (N) dan wordt de daarbij beherende instruktie 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 warden telkens, ongeacht de 35 inhoud van de erbij behorende instruktie, de hieronder vermelde handelingen uitgevoerd! reg [HCR] ï * reg [pcr] (53) reg [pCrJ : = mem [reg [oeer] + opcode] (54) 8400129 1/ * » ' * PHN 10.909 8
Hierbij betekent de handeling reg jlPCRj : = reg [PCR] dat de inhoud van het register PCR in het register IPCR wordt overgeschreven ( : = staat in programmeertaal voor "wordt") met andere woerden het adres van de instruktie die door de programmateller aangewezen wordt (momen- 5 tane programmatellerstand), wordt in het register IPCR geladen. De handeling reg [PCR-] : = mem [reg [OPER] + opcodej betékent dat in het register PCR wordt geladen het geheugenwoord (in dit geval een adreswoord) dat is opgeslagen op de geheugenplaats net adres reg OPER + opcode. Het adres reg OPER + opcode wordt samengesteld door de inhoud 10 van register OPER op te tellen bij de waarde zoals gegeven in het opcodedeel van het instruktiewoord. Deze handeling reg [pcr] : = mem [reg [OPER} + opcodej houdt dus in dat er in het register PCR een nieuw adres voor de programmateller wordt geladen.
Het is ook mogelijk dit nieuw adres door andere, handelingen dan door 15 de handeling reg [PCRj : = mem [reg. [OPER] + opcodej te genereren. Mogelijke andere handelingen zijn bijvoorbeeld: a) Reg [pCr} : = reg [oper] + opcode
Hierbij wordt het nieuwe adres direkt bepaald zonder dat er een leesoperatie uit het geheugen plaats heeft.
20 b) Reg [pcrJ : = 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 instruktie- woord een vast adres op te tellen.
25 c) Reg [PCRj : = mem [opcode + vast adres J
Ook bij deze handeling wordt geen gebruik gemaakt van het OPER register.
Deze handeling bevat daarentegen vel een geheugen leesoperatie. Op dit nieuwe adres voor de programmateller staat nu een eerste instruktie van een reeks instrukties die de betekenis van het instruktiewoord met (55) 30 virtuele opcode interpreteren^. Deze reeks instrukties wordt altijd afgesloten door een laatste instruktie uit het prograirma die onmiddelijk volgt op de instruktie met virtuele opcode die het verwerken van genoemde reeks heeft bewerkstelligd. Zo'n laatste instruktie is bijvoorbeeld van de vorm 35 reg [PCR]: = reg [IPCr] (56)
Hierbij wordt dan de programmatellerstand opnieuw op de waarde gesteld welk hij had aan het begin van de executie van de instruktie met virtuele opcodedeel.
8400129 PHN 10.909 9.
« «·
Het nattige effect van een virtuele opcode is dat bij iedere virtuele opcode een stukje code geëxecuteerd wordt. In dit stukje code ("de interpretator" van de virtuele opcode) is het mogelijk cm op een efficiënte wijze aan de argumentdescriptcr (en) van de virtuele opcode 5 te refereren indien IFCR als index-register wordt gebruikt.
Een instruktie met een virtuele opcode onderscheidt zich in hoofdzaak van een instruktie JUMP SUBROUTINE die een normale opcode heeft doordat tijdens de behandeling van de subroutine de prograirmatel-ler tijdelijk in het geheugen wordt opgeslagen. Enerzijds kost de daar— 10 voor benodigde geheugen schrijfoperatie extra bewerkingstijd, anderzijds is het daardoor niet mogelijk om (zonder extra bewerkingstijd) de oude progranmatellerstand als index-register voor het ophalen van argumsnt-descriptor (en) te gébruiken.
Figuur 2 laat een ccnputerprograrana zien aan de hand van het-15 welke de werking van een computersysteem volgens de uitvinding nader zal warden toegelicht. Het programma 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 20 kolom staan de geheugenadressen van de instrukties. De tweede kolom 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 25 de figuren 4 en 5 eerst enkele algemene aspecten van de instrukties beschreven warden teneinde 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) be- 30 vat 32 (4x8) bits. De bits 31 tot en met 24 bevatten altijd de opcode.
8
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 35 (0 tot en met 23) is afhankelijk van de aard en de klasse tot dewelke de opcode behoort.
Figuur 4 (a) laat het patroon zien van een instruktie die als opcode heeft één der normale opcodes UQADADRESS (F9), LQADVAHJE (FA) 8400129 PHN 10.909 10 ί *· t ‘ of STORE (EB). Bij deze instruktie bevatten de bits 20 tot en met 23 het nummer van het register (KGN) 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 5 verderop nog worden ingegaan.
Figuur 4 (b) laat het patroon zien van een instruktie die als opcode heeft de normale opcode MCNADIC (FC). 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 10 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 bevat-15 ten de bits 20 tot en met 23 het nummer van het eerste register (RGN) en de bits 12 tot en met 15 het nummer van het tweede register (RGT) 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 20 geen voor deze uitvinding relevante informatie.
Figuur 4 (d) respektievelijk 4 (e) laat het patroon zien van een instruktie die als opcode heeft de normale opcode JUMP SUBROUTINE (FE), respektievelijk JUMP CCNDITICNAL (FF), waarbij voor de .instruktie met opcode FF de conditie (CND) door de bits 20 tot en met 23 wordt 25 gegeven. De bits 0 tot en met 19 bevatten telkens de locatiedescriptor (ICDSC). Wanneer nu het computersysteem de opcode "FE" decodeert dan worden de volgende operaties uitgevoerd: mem [reg [SPRfj] : = reg [PCR^ reg [SPRj *: = reg [SPRj + 1 30 reg [PCRj = effa (LCDSC)
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 [PCRj : = effa (LCDSC) 35 (De progranmatellerstand (Reg |PCR}) wordt niet onthouden aangezien bij een Jump Conditional geen retour plaatsvindt.
Figuur 4(f) laat het patroon zien van een instruktie met een virtuele opcode (00; ...; F8j. De bits 0 tot ei met 23 worden hier 8400129 PUN 10.909 11 • <* afhankelijk van de interpretatiercutine gebruikt. Hierop zal verderop in de beschrijving warden ingegaan.
De locatiedescriptor beschrijft het adres behorende bij de instruktie-operand. Het computersysteem is van hardware middelen voor-5 zien cm deze locatiedescriptor te interpreteren. Figuur 5 laat een aantal voorbeelden zien van locatiedescriptordelen binnen een instruk-tiewoard. 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.
10 (a) In figuur 5(a) staat het woord "0000" voor een registeroperatie met betrekking tot het register gegeven door de bits 12 tot en 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 indexope-15 ratie. Hiervan is het resulterende adres a + Reg[n] waarbij a het getal gegeven door de bits 0 tot en met 11 en n het registemunmer gegeven door de bits 12 tot en met 15 voer stelt.
(c) In figuur 5(c) staat het woord "0010" voor een indexoperatie geprocedeerd door een aanpassingsoperatie (pre-adjust indexed).
20 Zo'n operatie verloopt in twee stappen: het adres gegeven door a + Reg/n] en tevens
Regjn] : - a + Reg£n] 25 (a en n habben dezelfde betekenis als hiervoor geciteerd).
(d) In figuur 5 (d) staat het woord "0011" voor een indexoperatie gevolgd door een aanpassingsoperatie (post-adjust index). Zo'n operatie verloopt ook weer in twee stappen: het adres is gegeven door 30 Regfiiï; en tevens
Reg jn] : * a + Reg |ή] (met analoge betekenis voor a en n).
Bij een indexoperatie die vergezeld is van een aanpassingsoperatie 35 warden er dus telkens zowel een waarde als een adres bepaald. Het gebruik van het adres wordt door het opcodedsel bepaald.
(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. ("iirmediate") $400129 PHN 10.909 12 (f) In figuur 5(f) staat het woord "1111" voor een interpretatie-operatie. De inhoud van het register waarvan het nummer is gegeven door de bits 12 tot en met 15 wordt als locatiedescriptor beschouwd. De Inhoud van de bits 0 tot en met 11 is bestemd voor 5 gegevens te gebruiken in de reeks van instrukties ingeleid door een instruktie met virtueel opcodedeel.
Aan de hand van de gegevens uit de figuren 4 en 5 zal nu het computerprogramma geïllustreerd in figuur 2 worden behandeld. Het resultaat van de uitwerking van dit programma is geïllustreerd in 10 figuur 3 (I tot en met VI). Telkens zal in de verdere beschrijving naast de instruktie tussen haakjes warden vermeld in welk deel van figuur 3 de betreffende instruktie is uitgewerkt.
De eerste instruktie van het carputerprogramma is gelocali-seerd op geheugenlocatie met adres 0 en luidt: 15 FAD47FFF; LOADVAL SPR,#$7FFF (figuur 3(1) instr. 1).
De opcode "FA" duidt aan dat het hier een instruktie met normale opcode (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 "47FFF", hierin 20 duidt het cijfer 4 dat het een locatiedescriptor betreft van het type zoals afgebeeld in figuur 5(e), namelijk een getal (immediate) en wel het getal 7FFF. Deze instruktie betekent dus : "Laad (FA) in het Stack Pointer Register (SPR) (D) het-getal (4) met waarde 7FFF". In het programmatellerregister (PCR) is nu het getal 1 opgeslagen, dit betekent 25 dat de eerstvolgende instruktie op geheugen 1 is gelocaliseerd. Het dient te worden opgemerkt dat in dit uitvoeringsvoorbeeld het register ZEROR telkens met de waarde "00000000" en het register CNER telkens met de waarde "00000001" geladen is. De constante waarden 0 en 1 worden dikwijls gebruikt. Het is dus handig om deze constante waarden in een 30 register aanwezig te hebben waardoor ze door eenvoudige registeropera-ties kunnen warden opgehaald.
Op géheugenplaats 1 is de tweede instruktie van het computerprogramma gelocaliseerd. Deze tweede instruktie luidt: FAM7F00; LOADVAL OPER, $7FQ0 (figuur 3(1), instr. 2).
35 Analoog aan de eerste instruktie is dit een instruktie met normale opcode "IDADVAL". Het registemummer "A" duidt het register OPER (figuur 1) aan. Deze instruktie betekent dus: Laad in het Operation Extend Register (OPER) het getal met waarde 7F00". In het register PCR is nu inmiddels 8400129 FHN 10.909 13 het getal 2 geladen.
De derde instruktie luidt: ΪΈ018400; JSR $400+JzER0R] (figuur 3(1), instr. 3).
De opcode "FE" duidt de instruktie met normale opcode "JUMP SUBROUTINE" 5 (figuur 4(d)) aan. De locatiedescriptor bevat liet getal "18400", hierin duidt het cijfer ”1” aan dat het een normale indexcperatie betreft (figuur 5 (b)). Het cijfer "8" duidt het register ZERQR aan, ai het getal "400" geeft de verplaatsing aan. Uitvoering van deze instruktie levert nu: 10 a) pen [reg [SPiQj : * reg [PCR] man[7FFF] : - 00000003
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.
15 b) reglSPR] : * reg [SPRj +1 regjSPRl : * 00007FFF + 1 = 00008000 c) regJPCRj : “ effa (LCDSC) effa (LCDSC) staat voor de effectieve inhoud van de locatiedeserip-tor, welke voor dit voorbeeld gegeven is door 400 + Ezebdr) . Daar 20 echter 00000000 in het register ZEROR staat is effa (LCDSC) -00000400 regjPCR] : = 00000400
Dit houdt in dat de progranmateller nu de geheugenplaats met adres 400 aanduidt. Er is dus een spreng naar geheugenplaats met adres 25 400 gemaakt.
De vierde instruktie, gelocaliseerd op geheugenplaats met adres 400 luidt: F&03B001; LQADVAL -R0,£fCR]++1 7FFFFFFF: $7FFFFFFF (figuur 3(1), instr. 4).
30 Het registemuirmer van deze instruktie met normale opcode LOAD VALUE is "0". In de locatiedescriptor met waarde "3B001" wijst het cijfer 3 op een indexcperatie gevolgd door een aanpass ingsoper at ie (figuur 5 (d)). De letter B duidt aan dat de aanpassing betrekking heeft op het register PCR (figuur 1) en het getal "OOI" geeft de hoeveelheid van de 35 aanpassing aan. Deze instruktie betekent dus:
Reg |p] : = mem [reg [BCR]]
Reg [o] : = man[40l]
Reg[0} : = 7¾¾¾¾¾¾1 3400129 * ✓ ψ ΡΗΝ 10.909 14
Laad in het register R0 de waarde welke is opgeslagen op het geheugen-adres dat wordt gegeven door de inhoud van register PCR en verhoog vervolgens de inhoud van register PCR met het getal "001". In het register PCR is de waarde (400 + 1 =) 401 opgeslagen. Op adres 401 staat 5 de waarde 7FFFFEFF welke nu in het register RQ wordt opgeslagen. De aanpassingsqperatie levert dan vervolgens: reg [PCR] : = reg [PCR] + 1 reg jFCRj : = 401 + 1 reg [PCRj : = 402 10 De vijfde instruktie, gelocaliseerd pp geheugenplaats net 402# luidt: FAB2DFFF; LQADVAL PCR,-1-H-{SPRj (figuur 3(1), instr. 5).
Het registemummer "B" duidt het register PCR aan. In de locatiedes-criptor met waarde "2DFFF" wijst het cijfer 2 op een indexoperatie,
15 geprecedeerd door een aanpassingsoperatie (figuur 5 (c)), de letter D
staat voor het register SPR en het hexadecimale getal FFF (2-ccmplements-notatie) staat voor "-1", dat de hoeveelheid van de aanpassing aangeeft, reg [SPR] : = reg [SPR] -1 reg [SPRj : = 00008000 -1 20 reg {SPRj : = 00007FFF
reg [PCR] : = mem [reg [SPI^J reg [PCRj : = mem 7FFF reg [PCRJ : = 00000003 want zoals aangegeven bij derde instruktie is op geheugenplaats met 25 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 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: 30 FA742000; LOADVAL R7,#$2Q00 (figuur 3(11), instr. 6).
Deze instruktie houdt in: Laad in het register R7 het getal met waarde 2000.
De zevende instruktie luidt: 00040020; ADDSTACK #$20 (figuur 3(H), instr. 7).
35 De opcode "00" duidt aan dat het hier cm een opcode gaat uit de klasse van virtuele opcodes (00 e joo,...,F8|}. De decodeer inrichting van het computersysteem decodeert deze virtuele opcode en het systeem zal dus als gevolg hiervan de volgende operaties uitvoeren: 8400129 pȕ 10.909 15
a) reg jÏPCRj : = reg |fCrJ
b) reg [PCRj : = mem [ reg /ÖPER] + OPCODE J
Toepassing van deze operaties bij deze zevende instruktie geeft dan: a) reg [IPCR] ; = reg [PCR] 5 reg jlFCR] : = 00000005
De inhoud van het register PCR (momentane prograranateller-stand) wordt dus in het register IPCR geladen. In tegenstelling tot een JUMP SUBROUlTNE-instruktie (derde instruktie) wordt hier dus geen schrijfoperatie in het geheugen uitgevoerd. Bovendien kost het laden 10 van PCR in IPCR aanzienlijk minder bewerkingstijd daar dit een gewone registeroperatie is.
b) reg [PCRj : = mem [ reg [OPER) + OPCODE J reg [PCRj : = mem [7P00 + OO] reg [PCRj : = mem LTPOOj 15 reg [PCRj : = 00001000 want zoals blijkt uit figuur 2 staat op geheugenplaats met adres 7F00 het woord 00001000 geschreven, dat nu in het register PCR wordt geladen. De gegevens uit laatst genoemde figuur suggereren dat de inhoud van de locatiedescriptcr van geen belang zou zijn. Dit is echter niet 20 zo. Bij de verdere beschrijving van het programma zal blijken dat de locatiedescriptcr bij een instruktie met virtuele opcode wel degelijk wordt gebruikt, en dus deze zelfs op dusdanige mania: wordt gebruikt dat hij reeds zoveel gegevens bevat, meer dan bijvoorbeeld mogelijk zou zijn bij gebruik van de instruktie JUMP SUBRCOTINE, waar alleen 25 een geheugenadres kan werden opgenemen.
De achtste instruktie, opgeslagen op de geheugenplaats met adres 1000 luidt: FA027FFF; LQADVAL R0,-1-H-[r7] (figuur 3(II), instr. 8).
Deze instruktie houdt de volgende operaties in: 30 a) Reg [7] : —1 + reg [ 7]
Reg [7] :=-1 + 2000 Reg (7j : = 1FFF b) Reg [0] : = wem [reg [ l] j Reg [0] : = mem [ieffJ 35 Re? [Ö] : = 00000000
Cp geheugenplaats met adres 1FFF staat de waarde 00000000
Deze operaties stellen in feite eai HPQP"-operatie voor toegepast cp register R7, die de rol van stapelwijzer vervult.
8400129 * * EHN 10.909 16
De negende instruktie luidt: FA11CFFF; LOADVAL R1,-1+[IPCrJ (figuur 3(11), instr. 9).
Deze instruktie houdt de volgende operatie in:
Reg 11] : = mem [-1 + reg [iPCRj] s Reg [1] : = man £-1 + 5j
Reg [1] = mem M
In het register R1 wordt dus de inhoud van geheugenplaats met adres 4 geladen. Maar daat staat precies de zevende instruktie die als machine-coee 00040020 heeft. Deze operatie is bedoeld on de locatiedescriptor 10 van de virtuele instruktie op te halen teneinde er in een verdere instruktie gebruik van te maken.
De tiende instruktie luidt: FA1F1000? LQADVAL R1 ,0R1 (figuur 3(11), instr. 10).
In de locatiedescriptor "F1Q0Q" wijst de letter "F" erop dat het hier on 15 een interpretatie-operatie handelt (figuur 5 (f)). Deze instruktie houdt dus in: Laad in register R1 de betekenis van de locatiedescriptor 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) 20 met waarde 20. Bijgevolg wordt er nu in het register R1 het woord "00000020" geschreven. Hieruit blijkt nu het belang van de locatiedescriptor bij een instruktie met virtuele opcode. In deze locatiedescrip-tor wordt informatie opgeslagen die in de reeks instrukties ingeleid door een instruktie met virtuele opcode wordt verwerkt.
25 De elfde instruktie luidt: FD001000; DYADIC ADD R0,R1 (figuur 3(III), instr. 11).
De opcode "ED" geeft een DYADIC-qperatie aan (figuur 4 (c)) 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 30 houdt dus in: "Tel de inhoud van register R0 en register R1 bij elkaar op en schrijf het resultaat in register RÖ Reg joj : = Reg £0] + Reg Cl]
Reg [0] : = 00000000 + 00000020 Reg [0] : = 00000020" 35 De twaalfde instruktie luidt: FB037001; STORE R0, [R7J++1 (figuur 3 (UI), instr. 12).
Deze instruktie houd de volgende operaties in: a) mem [reg [7j] : = reg [o] 8400129 PHN 10.909 17 roem [ΐΒϊτ] : = 20
Dus op geheugenplaats met adres 1FFF wordt het getal 20 geschreven, b) reg j>] : = reg [7] + 1 reg [7] : = 1FFF + 1 5 reg [7j : = 2000
Deze operaties stellen in feite een "EUSH"-operatie voor, toegepast op register R7, die de rol van stapel vervult.
De dertiende instruktie luidt: FAB0C000; LQADVAL PCR,IPCR (figuur 3 (III), instr. 13).
10 Dit is de slotinstruktie waarmee de reeks instrukties ingeleid door een instruktie met virtuele opcode wordt afgesloten. Deze instruktie bevat de operatie: Laad in het register PCR, de inhoud van het register IFCR. Aangezien in het register IPCR de stand van de progranmateller was bewaard, betekent dit dus dat de instruktie volgend op de instruk-15 ties met virtuele opcode, die nu is afgewerkt, nu aan de orde zal komen. Het totale effect van de virtuele instrukties (zevende instruktie ADDSTBCK #20) is nu dat bij de top van de stapel behorend bij de stapelwijzer (Register 7) het getal 20 is opgeteld.
De veertiende instruktie, gelocaliseerd op geheugenplaats met 20 adres 5 luidt: 00018100; ADOSEfiCK $100+[ZERQR] (figuur 3 (III), instr. 14).
De opcode *·00!* behoort tot de klasse van virtuele opcodes. Het computersysteem voert dus de volgende operaties uit:
a) reg [IFCR] : = reg [FCrJ
25 reg [iFCRj : = 6 b) reg [PCRj : = nan [ reg [OFER] + OPCODE ] reg ¢0¾ : = mem [7P00+00] reg [ICRJ : = 00001000
De vijftiende instruktie, gelocaliseerd op geheugenplaats 30 met adres 1000 luidt: FAQ27FFF; LQADVAL RQ,-1++[R7j (figuur 3(111), instr. 15).
Deze instruktie houdt de volgende operaties in: a) reg [7) :.--1 + reg f7] reg [7j :=-1 + 2000
35 reg [7] : = 00001FFF
b) reg [0] : - mem [reg [7j j reg [0] : = mem [1FFF] reg [o] : » 20 8400129 PHN 10.909 18
* * V
« »
Het aanwezig zijn van de waarde 20 op geheugenplaats met adres 1FFF is het gevolg van het behandelen van de twaalfde instruktie.
De zestiende instruktie luidt: FA11CEFF; LOADVAL R1,-1+[lPCRj (figuur 3 (IV), instr. 16).
5 Deze instruktie houdt de volgende operaties in:
Reg [1] : = iren £-1 + reg [IPCR| j
Reg flj : = mem £-1 + öj
Reg [1J : = mem £5] '
Reg [1] : = 00018100 10 Opnieuw (analoog aan de negende instruktie) wordt dus de code van de instruktie met virtuele opcode in het register R1 geladen.
De zeventiende instruktie luidt: FA1F10Q0; LOADVAL R1,3R1 (figuur 3 (IV), instr. 17).
Deze instruktie is analoog aan de tiende instruktie. De instruktie die 15 geladen is in register R1 heeft als locatiedescriptor "18100" wat staat voor de operatie:
Reg [1] : = item [$100 + reg [zerOr]J Reg [1] : = mem [l 00 + o]
Reg [Ί] = mem [ioo] 20 Reg [l] : = FFFFFFE0
In het register R1 wordt dus het woord FFFFFFE0 geladen. Ook hier kont weer naar voren hoe in een computersysteem volgens de uitvinding gebruik wordt gemaakt van de locatiedescriptor bij een instruktie met virtuele opcode.
25 De achtiende instruktie luidt: ED001000; DYADIC ADD R0,R1 (figuur 3 (IV), instr. 18).
Deze instruktie houdt de volgende operatie in:
Reg [o] : = Reg £θ] + Reg [ij Reg [o] : = 00000020 + FFFFFEE0 30 Reg [o] : = 00000000
Het feit dat het resultaat van deze operatie 00000000 is, heeft als gevolg dat de waarde 00000020 in het register OCR wordt geladen.
De negentiende instruktie luidt: FB037001; STORE R0,{R7J++1 (figuur 3(IV), instr. 19).
35 wat de volgende operatie inhoudt: a) mem [reg[7jj: = Reg £θ] mem QfffJ : = Reg jo] item £ifFf] : = 00000000 8400129 PHN 10.909 19 b) Reg [7J : « Reg £7] +1 Reg |7j : = 1ÏÏF + 1 Reg £7] : * 00002000
De twintigste instruktie luidt: S ERB0C000; LQADVAL PCR,IFCR (figuur 3(IV), instr. 20).
wat de volgende operaties inhoudt:
Reg {PC^ : = Reg [ifcrJ
Reg £fCR] ï = 00000006
Dus opnieuw de eindinstruktie waarmee een reeks instrukties ingeleid 10 door een virtuele opcode wordt afgesloten.
De éénentwintigste instruktie luidt: 01018101; GHSTM3C $101+[zEROrJ (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: 15 a) Reg EnCRj : = reg [pCRj Règ £lFCR] : = 00000007 b) Reg : = man {reg {ÓPErJ + OPCODE]
Reg {PC^I : = mem [7F00 + 01]
Reg * * mem jj7P01J
20 Reg fPO§ : = 00001010 (zie figuur 2)
Uit deze instruktie is nu naar voren gekomen dat bij een virtuele opcode de inhoud van deze opcode dimt om zowel het herkennen van een virtuele opcode alsook voor het bepalen van een geheugenadres van een begin instruktie van een reeks instruktiewoarden die de betekenis van 25 de instruktie met virtuele opcode bepalen.
De tweern twintigste instruktie, gelocaliseerd op geheugen-plaats met adres 1010 luidt: FA027FFF; LQACNM, R0,-1++|R7j (figuur 3(IV), instr. 22).
Deze instruktie omvat de volgende operaties: 30 a) Reg £θ] · * man £-1 + Reg £7]]
Reg £0] : = mem [-1 + 2000]
Reg [0J : = man [lEPFj
Reg £0] 00000000 (zie hiervoor instruktie 19) b) Reg [7] : » -1 + Reg [7]
35 Heg [7] : = 00001FFF
De drieëntwintigste instruktie luidt: FA11CFFF; IOftEWRL R1,-1+^PCRj (figuur 3(V),'instr. 23).
Deze instruktie omvat de volgende operatie: 8400129 • % PHN 10.909 20
Reg [1] : = mem [-1 + Reg |ÏpcrJJ
Reg [1] : = mem £-1 + i]
Reg £l] : = mem [θ]
Reg flj : = 01018101 5 De vierentwintigste instruktie luidt: FA1F1000; LQADVAL R1/<3R1 (figuur 3 (V), instr. 24).
De locatiedescriptar van de 'instruktie in register 1 opgeslagen bevat "18101”. Dit houdt als operatie In:
Reg fl] : = mem £$101 + Reg £ZERORjJ 10 Reg [1] : = mem L101J Reg [Ί] : = F0000100
De vijfentwintigste instruktie luidt: FD061000; DYADIC OR R0,R1 (figuur 3(V), instr. 25).
In deze instruktie wijst het cijfer "6" op een logische "OF"-operatie.
15 Reg [0] : = Reg [o] V Reg fl ]
Reg [0] : = F0000100
Het feit dat nu in Reg 0 een negatief getal komt (F, 2-compiements-notatie) heeft tot gevolg dat de waarde 00000010 in het register CCR wordt geladen. Uit deze instruktie en de vorige blijkt nu de mogelijk-20 heid cm door middel van virtuele opcodes een verscheidenheid aan operaties te laten uitvoeren.
De zesentwintigste instruktie luidt: FB037001; STORE R0,[r7]++1 (figuur 3 (VI), instr. 26).
Deze instruktie houdt de volgende operaties in: 25 a) mem [Reg [7]] : = Reg [o] mem £ifff] : = F00Q0100 b) Reg £7j : =* Reg \l] + 1
Reg £7j : =FJFEF‘.+ 1
Reg [7] : = 2000 30 De zevenentwintigste instruktie luidt: · EABOCOOO; LOADVAL FCR,IPCR (figuur 3(VI), instr. 27).
wat inhoudt:
Reg [pcr] : = Reg [iPCRj Reg [PCR] : = 7 35 Het computersysteem zal nu de instrukties gelocaliseerd op geheugen-plaats met adres 7 gaan behandelen en zodoende het programma verder afhandelen. Op de uitwerking van deze instruktie zal niet verder worden ingegaan daar dit van geen belang is voor het beschrijven van de uit- 84 0 Ö12 9 FHN 10.909 21 vinding. Deze instruktie sluit dan tevens het canputerprogramna af dat ter illustratie van het functioneren van een computersysteem volgens de uitvinding werd beschreven.
In hoofdzaak zijn uit de beschrijving van dit ccnputerpro-5 grarrma twee bijzondere aspecten naar voren gekanen. Deze zijn: a) Het behandelen van een instruktie met virtuele opcode.
b) Het behandelen van de locatiedescriptor bij een instruktie met virtuele opcode.
Het feit dat bij een computersysteem volgens de uitvinding instrukties 10 met virtuele opcodes te gebruiken zijn, biedt een breed spectrum van mogelijkheden aan de systeemprogramneur. Door gebruik te maken van een instruktie roet virtuele opcode kan een reeks instrukties warden ingeleid om een bepaalde bewerking te doen. Deze bewerking kan zijn een optelling (instruktie elf) of een vermenigvuldiging of elke andere ope-1S ratie. De systeenprogramreur kan aldus door een zelf gekozen definitie van virtuele opcodes het computersysteem zo programmeren dat nieuwe "instrukties" ontstaan. Gezien de efficiënte opslag van PCR in IPCR en het feit dat IPCR als index-register wordt gebruikt, worden zulke nieuwe instrukties op efficiënte wijze afgehandeld. Verder is het mogelijk door 20 het wijzigen van OPER (wijzen naar een andere tabel) om per programma een andere verzameling van instrukties aan te bieden waarbij rekening ♦ 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 25 bevat informatie die in een reeks instrukties wordt verwerkt. Het verwerken van deze informatie kan op meerdere manieren en wordt volledig 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 met virtuele opcodes te getrui-30 ken. In dat geval dient echter eerst de inhoud van het IFCR-register op een stapel in het geheugen te worden geplaatst.
35 8400129

Claims (9)

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 opcodedeel 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; 10 (c) uitvoeren van de door het instruktiewoord gegeven operaties met het kenmerk, dat bij het decoderen wordt onderzocht tot dewelke der klassen het opcodedeel van het eerste instruktiewoord behoort en dat voor instruktiewoorden met een opcodedeel behorende tot de tweede klasse het uitvoeren de volgende stappen bevat; 15 (cl) opslaan van de momentane prograirmatellerstand in een daartoe voorbehouden supplementair prograirmatellerregister; (c2) genereren, op basis van het opcodedeel uit het eerste instruktiewoord, van een geheugenadres op hetwelke een tweede instruktiewoord is gelocaliseerd, welk tweede instruktiewoord de begininstruktie is 20 van een reeks instruktiewoorden die de betekenins van het eerste instruktiewoord bepalen; (c3) stellen van de momentane programmatellerstand op genoemde geheugenadres; (c4) behandelen van genoemde reeks instrukties; 25 (c5) stellen van de momentane programmatellerstand op een waarde bepaald door de in hét supplementair progranmatellerregister aanwezige programmatellerstand.
2. Werkwijze volgens conclusie 1, net het kenmerk, dat het geheugenadres wordt gegenereerd door bij het opcodedeel een vaste waarde 30 op te tellen.
3. Werkwijze volgens conclusie 1, met het kenmerk, dat het geheugenadres wordt gegenereerd door bij het opcodedeel een waarde op te tellen welke vooraf is opgeslagen in een daartoe voorbehouden operatie-extensieregister.
4. Werkwijze volgens conclusie 1, met het kenmerk, dat het gene reren van het geheugenadres voor het tweede instruktiewoord de volgende substappen bevat; (1) vormen van een tabeladres uit een geheugentahel door het optellen 8400129 * , η * ΡΗΝ 10.909 23 van een vaste waarde bij het qpcodedeel van het eerste instruktiewoord; (2) adresseren van een geheugenwoord gelocaliseerd op het gevormde tabeladres; 5 (3) ophalen van het geheugenwoord op genoemde tabeladres, welk geheugen woord het geheugenadres vormt.
5. Werkwijze volgens conclusie 1, met het kenmerk, dat het genereren van het geheugenadres voor het tweede instruktiewoord de volgende substappen bevat: 10 (1) vormen van een tabeladres uit een geheugentabei door het bij het opcodedeel van het eerste instruktiewoord optellen van een waarde welke vooraf is opgeslagen in een daartoe voorbehouden operatie-extensieregister; (2) adresseren van een geheugenwoord gelocaliseerd op het gevormde 15 tabeladres; (3) ophalen van het geheugenwoord op genoemde tabeladres, welk geheugen-wocrd het geheugenadres vormt.
6. Werkwijze volgens één der voorgaande conclusies, met het kenmerk, dat bij genoemde reeks van instruktiewoorden door ten minste één 20 derde instruktiewoord het descriptor deel uit het eerste instruktiewoord in een register wordt geladen.
7. Werkwijze volgens conclusie 6, met het kenmerk, dat bij ge- * noemde reeks van instruktiewoorden door ten minste één vierde instruktiewoord het descriptordeel uit het eerste instruktiewoord wordt ver-25 werkt.
8. Dataprocessor voorzien van een geheugen voor het opslaan van 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 30 onderverdeeld, welke dataprocessor verder een programnatellerregister, een adresgenerator en een opcodedecodeur bevat, met het kenmerk, dat de opcodedecodeur van eerste middelen is voorzien om opcodedelen van de eerste en de tweede klasse afzonderlijk te herkennen ai van tweede middelen voor het onder controle van een herkend opcodewoord van de 35 tweede klasse een stuursignaal te genereren, welke dataprocessor verder een supplementair programnatellerregister en overdrachtsmiddelen bevat, welke overdrachtsmiddelen een eerste stuur ingang hebben voor het ontvangen van hët stuursignaal en verder voorzien zijn voor het onder be- ’400129 , A v » * <s * PHN 10.909 24 sturing van een ontvangen stuursignaal overbrengen van de inhoud van het prograinmatellerregister naar het supplementair progr ammatellerregister, en waarbij de adresgenerator voorzien is voor het onder controle van het stuursignaal genereren van een geheugenadres op hetwelke een beginin-5 struktiewoord van een reeks instruktiewoorden voor het behandelen van een descriptordeel is gelocaliseerd.
9. Dataprocessor volgens conclusie 8, met het kenmerk, dat de dataprocessor verder voorzien is van 'een operatie-extensieregister dat een tweede stuuringang voor het ontvangen van het stuursignaal bevat 10 en een uitgang verbonden met de adresgenerator bevat. 15 20 25 30 35 3400129
NL8400129A 1984-01-16 1984-01-16 Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze. NL8400129A (nl)

Priority Applications (7)

Application Number Priority Date Filing Date Title
NL8400129A NL8400129A (nl) 1984-01-16 1984-01-16 Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze.
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
JP60005627A JPS60159945A (ja) 1984-01-16 1985-01-16 機械‐コード化命令ワード取扱い方法

Applications Claiming Priority (2)

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

Publications (1)

Publication Number Publication Date
NL8400129A true NL8400129A (nl) 1985-08-16

Family

ID=19843331

Family Applications (1)

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

Country Status (2)

Country Link
JP (1) JPS60159945A (nl)
NL (1) NL8400129A (nl)

Also Published As

Publication number Publication date
JPS60159945A (ja) 1985-08-21

Similar Documents

Publication Publication Date Title
Hsieh et al. Java bytecode to native code translation: The Caffeine prototype and preliminary results
US7200842B1 (en) Object-oriented instruction set for resource-constrained devices
Appel et al. Continuation-passing, closure-passing style
TWI252431B (en) Binary translator
US8006237B2 (en) Program code conversion
JPH01201729A (ja) デコード方法
US5923883A (en) Optimization apparatus which removes transfer instructions by a global analysis of equivalence relations
Hummel et al. Annotating the Java bytecodes in support of optimization
JPS6149242A (ja) コード最適化方法
US20050235268A1 (en) Optimisation of a compiler generated program code
NL8400129A (nl) Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze.
US7207036B2 (en) Preprocessing of interfaces to allow fast call through
St-Amour et al. PICOBIT: a compact scheme system for microcontrollers
NL8403628A (nl) Werkwijze voor het behandelen van machine gecodeerde instruktiewoorden, en dataprocessor voor het uitvoeren van de werkwijze.
Ibsen A portable virtual machine for Ada
Van Reeuwijk et al. Adding tuples to Java: a study in lightweight data structures
Azevedo et al. High performance annotation-aware JVM for Java cards
Pammer Fast machine-code generation for stack-based languages
JPS62107339A (ja) マイクロコンピユ−タの命令構成方法
Loudon C++ Pocket Reference: C++ Syntax and Fundamentals
GB2153561A (en) Handling machine-coded instruction words
Gimenez et al. Subroutine and Structuring of the Assembly Programming Language
Cesare et al. Taxonomy of program features
Rochel Very Lazy Evaluation-A new execution model for functional programming languages
Wittenberg Data Structures and Algorithms in C++: Pocket Primer

Legal Events

Date Code Title Description
A1B A search report has been drawn up
BV The patent application has lapsed