FI102219B - Parannettu virheraportointi käännetyn koodin suorittamiseksi - Google Patents

Parannettu virheraportointi käännetyn koodin suorittamiseksi Download PDF

Info

Publication number
FI102219B
FI102219B FI925056A FI925056A FI102219B FI 102219 B FI102219 B FI 102219B FI 925056 A FI925056 A FI 925056A FI 925056 A FI925056 A FI 925056A FI 102219 B FI102219 B FI 102219B
Authority
FI
Finland
Prior art keywords
computer program
instructions
address
instruction
code
Prior art date
Application number
FI925056A
Other languages
English (en)
Swedish (sv)
Other versions
FI102219B1 (fi
FI925056A0 (fi
FI925056A (fi
Inventor
Scott G Robinson
Richard L Sites
Original Assignee
Digital Equipment Corp
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
Priority claimed from US07/666,025 external-priority patent/US5307504A/en
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of FI925056A0 publication Critical patent/FI925056A0/fi
Publication of FI925056A publication Critical patent/FI925056A/fi
Application granted granted Critical
Publication of FI102219B1 publication Critical patent/FI102219B1/fi
Publication of FI102219B publication Critical patent/FI102219B/fi

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Detection And Correction Of Errors (AREA)
  • Devices For Executing Special Programs (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
  • Chemical Or Physical Treatment Of Fibers (AREA)
  • Preparation Of Compounds By Using Micro-Organisms (AREA)
  • Eye Examination Apparatus (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)
  • Error Detection And Correction (AREA)
  • Developing Agents For Electrophotography (AREA)
  • Advance Control (AREA)

Description

, 102219
Parannettu virheraportointi käännetyn koodin suorittamiseksi
Esillä oleva patenttihakemus on osittain jatkoa Scott G. Robinsonin ja Richard L. Sitesin patenttihakemukselle "IMPROVED SYSTEM AND 5 METHOD FOR PRESERVING INSTRUCTION GRANULARITY FOR TRANSLATED PROGRAM CODE", US-sarjanumero 07/666 025, jätetty maaliskuun 7. päivänä 1991.
Viittaus liittyviin patenttihakemuksiin - Viitataan seuraavaan patenttihakemukseen, joka on sisällytetty tähän viitteen kautta: 10 SARJANUMERO 07/666 071, jätetty maaliskuun 7. päivänä 1991, otsikkona IMPROVED SYSTEM AND METHOD FOR PRESERVING INSTRUCTION STATE-ATOMICITY FOR TRANSLATED PROGRAM CODE, keksijät Scott G. Robinson, Richard Sites ja Richard Witek.
Viitataan myös seuraaviin patenttihakemuksiin, jotka on siirretty 15 esillä olevan patenttihakemuksen haltijalle ja jotka liittyvät koodin kääntämiseen: SARJANUMERO 07/666 070, jätetty maaliskuun 7. päivänä 1991, otsikkona BRANCH RESOLUTION VIA BACKWARD SYMBOLIC EXECUTION, keksijä Richard L. Sites.
20 SARJANUMERO 07/666 216, jätetty maaliskuun 7. päivänä 1991, otsikkona LOCATING PROGRAM CODE BY SUCCESSIVE CODE EXECUTION AND INTERPRETATION, keksijä Richard L. Sites.
SARJANUMERO 07/666 210, jätetty maaliskuun 7. päivänä 1991, i otsikkona USE OF STACK DEPTH TO IDENTIFY MACHINE CODE
25 MISTAKES, keksijä Richard L. Sites. SARJANUMERO 07/662 223, jätetty maaliskuun 7. päivänä 1992, otsikkona CROSS-IMAGE REFERENCING OF PROGRAM CODE, keksijä Richard L. Sites.
SARJANUMERO 07/666 083, jätetty maaliskuun 7. päivänä 1991, otsikkona USE OF STACK DEPTH TO IDENTIFY ARCHITECTURE AND 30 CALLING STANDARD DEPENDENCIES IN MACHINE CODE, keksijä Thomas R. Benson.
SARJANUMERO 07/666 084, jätetty maaliskuun 7. päivänä 1991, otsikkona REGISTER USAGE TRACKING TO SUPPORT COMPILED 32-BIT CODE IN 64-BIT ENVIRONMENT, keksijä Thomas R. Benson.
35 SARJANUMERO 07/666 085, jätetty maaliskuun 7. päivänä 1991, otsikkona MAPPING ASSEMBLY LANGUAGE ARGUMENT LIST REFER- 2 102219 ENCES IN TRANSLATING CODE FOR DIFFERENT MACHINE ARCHITECTURE, keksijä Thomas R. Benson.
SARJANUMERO 07/666 082, jätetty maaliskuun 7. päivänä 1991, otsikkona TRACKING CONDITION CODES IN TRANSLATING CODE FOR 5 DIFFERENT MACHINE ARCHITECTURES, keksijä Thomas R. Benson.
SARJANUMERO 07/666 023, jätetty maaliskuun 7. päivänä 1991, otsikkona LINKING OF PROGRAM UNITS AT PROGRAM ACTIVATION, keksijä Daniel L. Murphy.
SARJANUMERO 07/666 196, jätetty maaliskuun 7. päivänä 1991, 10 otsikkona AUTOMATIC FLOWGRAPH GENERATION FOR PROGRAM ANALYSIS AND TRANSLATION, keksijä Richard L. Sites.
Viitataan myös seuraaviin esillä olevan patenttihakemuksen haltijan nimissä oleviin patenttihakemuksiin.
SARJANUMERO 07/666 039, jätetty maaliskuun 7. päivänä 1991, 15 otsikkona IMPROVED SYSTEM AND METHOD FOR EXECUTING MULTIPLE CODES IN A MULTI-ARCHITECTURE ENVIRONMENT WITH CODE DEBUGGING CAPABILITY, keksijät Mark A. Herdeg, James A. Woolridge, Scott G. Robinson, Ronald F. Brender ja Michael V. lies.
SARJANUMERO 07/666 028, jätetty maaliskuun 7. päivänä 1991, 20 otsikkona SYSTEM AND METHOD FOR AUTOMATICALLY INTERFACING CALL CONVERTIONS BETWEEN TWO DISSIMILAR PROGRAM UNITS, keksijä Daniel L. Murphy.
SARJANUMERO 07/665 888, jätetty maaliskuun 7. päivänä 1991, otsikkona IMPROVED SOFTWARE DEBUGGING SYSTEM AND METHOD 25 ESPECIALLY ADAPTED FOR CODE DEBUGGING WITHIN A MULTIARCHITECTURE ENVIRONMENT, keksijät James A. Woolridge, Ronald F. Brender ja Henry N. Grieb, III.
SARJANUMERO 07/666 022, jätetty maaliskuun 7. päivänä 1991, otsikkona IMPROVED SIMULATOR SYSTEM AND METHOD ESPECIALLY 30 ADAPTED FOR CODE EXECUTION IN A MULTI-CODE EXECUTION AND DEBUGGING SYSTEM WITHIN A MULTI-ARCHITECTURE ENVIRONMENT, keksijät Mark A. Herdeg ja Michael V. lies.
SARJANUMERO 07/666 072, jätetty maaliskuun 7. päivänä 1991, otsikkona IMPROVED SYSTEM AND METHOD FOR DETECTING CROSS-35 DOMAIN INSTRUCTION CALLS AND DATA REFERENCES ESPECIALLY ADAPTED FOR CODE INTERFACE JACKETING IN A MULTI-CODE
3 102219 EXECUTION AND DEBUGGING SYSTEM WITHIN A MULTIARCHITECTURE ENVIRONMENT, keksijät Mark A. Herdeg, Scott G. Robinson, Ronald F. Brenderja Michael V. lies.
SARJANUMERO 07/665 752, jätetty maaliskuun 7. päivänä 1991, 5 otsikkona IMPROVED SYSTEM AND METHOD FOR JACKETING CROSSDOMAIN CALLS IN A MULTI-CODE EXECUTION AND DEBUGGING SYSTEM WITHIN A MULTI-ARCHITECTURE ENVIRONMENT, keksijät Ronald F. Brenderja Michael V. lies.
SARJANUMERO 07/665 886, jätetty maaliskuun 7. päivänä 1991, 10 otsikkona FASTER PROCESS FOR DEVELOPING NEW COMPUTER SYSTEMS EMPLOYING NEW AND BETTER PROCEDURES FOR SOFTWARE DEVELOPMENT AND TESTING, keksijät Robert V. Landau, James E. Johnson ja Michael V. lies.
Keksinnön tausta 15 1. Tekniikan ala
Esillä oleva keksintö liittyy järjestelmiin ja menetelmiin ohjelmakoodien sovittamiseksi suoritettavaksi erilaisissa tietokonejärjestelmissä sekä erityisesti järjestelmiin ja menetelmiin alkuperäisessä ohjelmassa olevista virheistä ilmoittamiseksi alkuperäisestä 20 ohjelmasta muodostetun käännöksen suorittamisen aikana. Tarkemmin sanottuna keksinnön kohteena on menetelmä digitaalisen tietokoneen käyttämiseksi ilmoittamaan virheestä, joka esiintyy sellaisen toisen tietokoneohjelman suorittamisen aikana, joka on ensimmäisen tietokoneohjelman käännös, missä ensimmäinen tietokoneohjelma sisältää 25 käskyjä ensimmäisestä käskykannasta, joka perustuu ensimmäiseen käskyarkkitehtuuriin, kullakin ensimmäisessä tietokoneohjelmassa olevalla käskyllä on vastaava osoite, toinen tietokoneohjelma sisältää käskyjä toisesta käskykannasta, joka perustuu toiseen käskyarkkitehtuuriin, kullakin toisessa tietokoneohjelmassa olevalla käskyllä on vastaava osoite, jotkin 30 ensimmäisessä tietokoneohjelmassa olevista käskyistä on kukin käännetty vastaaviksi useiksi toisessa tietokoneohjelmassa oleviksi käskyiksi, ja missä mainittu virhe aiheutuu yhden toisessa ohjelmassa olevista käskyistä suorittamisesta, jolloin käskyt ensimmäisestä käskykannasta voidaan korvata yhdellä tai useammalla käskyllä toisesta käskykannasta.
35 4 102219 2. Tekniikan taso
Tietokoneohjelmoinnin varhaisvuosina tietokoneohjelmien käskyt kehitettiin mikrokoodin tasolla. Ohjelmistotekniikan kehittymisen ja laajenemisen myötä yhdistettiin enemmän tehtäviä yksittäisiin monimutkaisiin 5 käskyihin, jotka olivat suoritettavissa tällaista käskyjen mutkikkuutta varten suunnitellulla laitteistoarkkitehtuurilla. Käskyjen kasvanut monimutkaisuus tuotti yleensä suurentuneita hinta/suorituskykyetuja laitekustannusten ja suoritusominaisuuksien kehittyvässä ympäristössä. Tästä johtuen mutkikkaat käskykantakoodit (CISC, complex instruction set codes) tulivat laajalti 10 hyväksytyiksi.
Käskyjen mutkikkuuden lisääntyessä järjestelmän laitteiston suunnittelu suuremmille suoritusnopeuksille on kuitenkin tullut vaikeammaksi. Sen asemesta supistettu käskykantakoodi (RISC, reduced instruction set code) yhdistettynä sitä vastaavaan tietokonelaitteiston RISC-arkkitehtuuriin on 15 saavuttanut hyväksymisen mekanismina, joka johtaa merkittävästi parantuneeseen järjestelmän hinnan ja suorituskyvyn suhteeseen.
RISC-järjestelmä käyttää yleensä yksinkertaisempia peruskäskyjä haluttujen toimintojen ohjaamiseksi. Yksi RISC-käsky normaalisti määrittelee yhden operaation käyttäen enintään yhtä muistiosoitetta. Lisäksi RISC-20 järjestelmä normaalisti käyttää rekisteriä kullakin peruskäskyllä. RISC-käskykannan käskyt ovat silti korkeammalla tasolla kuin mikrokoodi.
Tyypillisessä CISC-järjestelmässä yksi käsky voi määritellä mutkikkaan operaatiosarjan ja se voi suorittaa monta suoraa muistiosoitusta. Siten CISC-käskyn suorittamat operaatiot voivat tarvita useita RISC-käskyjä.
25 RISC-järjestelmä suunnitellaan yleensä käyttäen optimoituja laitteisto- ja ohjelmistosovituksia, jotka aikaansaavat järjestelmän nopeamman toiminnan, paremman kokonaissuorituskyvyn ja pienemmät järjestelmäkustannukset verrattuna käytettävissä olevien laitteistojen kustannuksiin ja suorituskykyyn.
30 Eräs este vaihtamiselle CISC-järjestelmistä RISC-järjestelmiin on suurten ohjelmakirjastojen olemassaolo, jotka on kehitetty CISC-järjestelmille ja joita ei ole yleisesti saatavissa RISC-järjestelmille. Kun tietokonejärjestelmän käyttäjä aikoo hankkia uuden tietokonejärjestelmän, eräs käyttäjän suurimpia huolenaiheita on se, voidaanko käyttäjän 35 sovellusohjelmakirjastoa käyttää tai voidaanko se muuntaa käytettäväksi uudessa tietokonejärjestelmässä ja mitkä olisivat tämän kirjaston β 102219 vaihtamiskustannukset. Siten sellaisille tietokojejärjestelmän käyttäjille, jotka haluavat saada paremman hinta/suorituskykysuhteen RISC-tietokonejärjestelmien avulla, on erittäin tärkeätä, että on käytettävissä taloudellinen ja tehokas mekanismi käyttäjän sovellusohjelmakirjaston 5 sovittamiseksi eli "siirtämiseksi" RlSC-tietokonejärjestelmässä suoritettavaksi.
Käyttäjällä on ohjelmien siirtämiseksi käytettävissään useita vaihtoehtoja. Voidaan käyttää uudelleen kääntämistä tai uudelleen koodaamista, mutta näitä tekniikoita käytetään tyypillisesti sellaisella korkean tason kielellä kuten FORTRANilla kirjoitettujen ohjelmien siirtämiseen, joilla 10 joko ei ole yksityis-kohtaisia koneriippuvuuksia tai joista mahdolliset koneriippuvuudet poistetaan käsin suoritettavilla ohjelman muutoksilla. Lisäksi uudelleen kääntämisessä tai uudelleen koodaamisessa käyttäjällä on tyypillisesti kaikki vastuu ohjelman muuttamisesta ja ohjelman käyttäytymisen varmistamisista.
15 Vaihtoehtoisesti voidaan käyttää tulkintaproseduureja, mutta tämän lähestymistavan haittana tyypillisesti on ohjelman olennaisesti alentunut suorituskyky. Tulkintaproseduurit ovat tarkemmin sanoen ohjelmia, jotka toimivat tietyssä tietokoneessa ja lukevat lähdekäskyjen (jotka voivat hyvin olla erityyppiselle tietokoneelle tarkoitettuja käskyjä) virtaa datana ja kullakin 20 lähdekäskyllä suorittavat annetun operaation. Tällaiset proseduurit suorittavat tyypillisesti 10-100 konekielistä käskyjä mainitussa tietyssä tietokoneessa yhden ainoan lähdekäskyn tulkitsemiseksi. Siten tulkintaproseduurit aiheuttavat ohjelman suorituskyvyn olennaisen alenemisen verrattuna toiminnallisesti ekvivalenttisen koodin suoraan suorittamiseen mainitussa 25 tietyssä tietokoneessa.
Vaikuttavin ja tehokkain siirto kuitenkin käsittää koodin kääntämisen (translation). Koodin kääntämisessä olemassa olevan ohjelman kukin käsky käännetään yhdeksi tai useammaksi kohdekoneen kielellä ilmaistuksi käskyksi. Näin ollen CISC-ohjelmien kääntäminen RISC-ohjelmiksi tai ,· 30 yleisemmin sellainen ohjelman kääntäminen, jossa käännetyllä koodilla on suhteellisesti supistettu käskykanta, vaatii "monta" tai "useita" käskyjä käännetyssä koodissa kutakin käännettävän koodin käskyä kohti.
Ongelmana koodin kääntämisessä CISCistä RISCiksi on, että kun käännetyn ohjelman suoritus keskeytyy virheen takia, niin virhettä koskeva 35 informaatio perustuu tavallisesti RISC-koneen tilaan. Korkean tason CISC-lähdekoodiin tyypillisesti liittyvät testausohjelmat (debugging programs) 6 102219 kuitenkin olettavat, että virhettä koskeva informaatio perustuu CISC-koneen tilaan. Testausohjelma käyttää esimerkiksi sitä testausinformaatiota, joka on kehitetty, kun ClSC-lähdekoodi on käännetty CISC-kohdekoodiksi. Testausinformaatio tyypillisesti sisältää informaation, joka liittää symboliset 5 (ASCII-) nimet numeerisen CISC-ohjelman ja datan osoitteisiin. Testausohjelma käyttää tätä symbolisia nimiä koskevaa informaatiota salliakseen ohjelmoijan tutkia muistin sisältöä CISC-koneessa valittujen symbolisten nimien avulla valituissa osoitteissa. Tyypillisesti testausinformaatio sisältää myös jäljitysinformaation, joka liittää CISC-10 lähdekoodissa olevat rivinumerot CISC-kohdekoodissa oleviin vastaaviin numeerisiin osoitteisiin. Kun virhe esiintyy sinä aikana kun CISC-ohjelmaa suoritetaan CISC-koneessa, CISC-koneen käyttöjärjestelmä lukee CISC-koneessa olevan laiterekisterin määrittääkseen virheen aiheuttaneen CISC-käskyn osoitteen. Käyttöjärjestelmä välittää tämän osoitteen 15 virheilmoitusohjelmalle, joka käyttää jäljitysinformaatiota ilmoittaessaan ohjelmoijalle sen rivinumeron CISC-lähdekoodissa, josta virhe on peräisin.
Koska CISC-lähdekoodin kääntämiseen liittyvät testausohjelmat perustuvat CISC-kohdekoodin osoitteisiin, CISC-käskyihin ja CISC-koneessa olevaan laitteistoon, niin ne eivät mahdollista CISC-lähdekoodin testausta 20 käännetyn ohjelman suorituksen aikana RISC-koneessa. CISC-lähdekoodin testaus vastaavan RISC-kohdeohjelman suorituksen aikana RISC-koneessa voitaisiin suorittaa sellaisella testausohjelmalla, joka viittaa siihen testausinformaatioon, joka on kehitetty käännettäessä CISC-lähdeohjelma suoraan RISC-kohdekoodiksi, mutta tämä tekniikka edellyttäisi CISC-25 lähdekoodin uudelleen kääntämistä. Lisäksi joissakin tapauksissa ClSC-lähdekoodi on kadonnut tai tuhoutunut, joten uudelleen kääntäminen ei ole mahdollista.
Keksinnön yhteenveto
Keksinnön päämääränä on aikaansaada menetelmä, joka välttää 30 edellä mainitut epäkohdat. Tämä päämäärä saavutetaan keksinnön mukaisella menetelmällä, jolle on tunnusomaista se, että menetelmä käsittää seuraavat vaiheet: (a) keskeytetään toisen tietokoneohjelman suorittaminen, kun mainittu virhe esiintyy; 35 (b) määritetään mainitun yhden mainitussa toisessa tietokoneohjelmassa olevan käskyn ensimmäinen osoite; 7 102219 (c) viitataan osoitteiden vastaavuustauluun sen yhden mainituista ensimmäisessä tietokoneohjelmassa olevista käskyistä toisen osoitteen määrittämiseksi ensimmäisestä osoitteesta, josta mainittu yksi mainituista toisessa tietokoneohjelmassa olevista käskyistä on käännetty; 5 (d) viitataan jäljitysinformaatioon sen mainitussa lähdeohjelmassa olevan lähdekoodin osan tunnistamiseksi, josta mainittu yksi mainituista ensimmäisessä tietokoneohjelmassa olevista käskyistä on käännetty; sekä (e) ilmoitetaan, että mainittu virhe on esiintynyt ja ilmaistaan lähdekoodin mainittu osa mainitussa lähdeohjelmassa, josta mainittu yksi 10 mainittu käsky mainitussa tietokoneohjelmassa on käännetty, jolloin osoitteiden vastaavuustaulu sisältää tietoja, joissa kussakin on ensimmäisessä tietokoneohjelmassa olevan vastaavan käskyn osoite ja ensimmäisen käskyn osoite toisessa tietokoneohjelmassa olevassa käskykannassa, joka on käännetty ensimmäisessä tietokoneohjelmassa olevasta vastaavasta 15 käskystä, ja jolloin kaikkien ensimmäisessä tietokoneohjelmassa olevien käskyjen osoitteet eivät sisälly osoitteiden vastaavuustaulussa oleviin tietoihin, (f) jolloin rajakäskyjen bittikartta on kehitetty ensimmäisen tietokoneohjelman kääntämisen aikana, mistä on saatu toinen tietokoneohjelma, joka rajakäskyjen bittikartta ilmaisee sellaiset toisessa 20 tietokoneohjelmassa olevat käskyt, jotka aloittavat ensimmäisessä tietokoneohjelmassa olevista vastaavista käskyistä käännetyt käskykannat, ja että mainittu vaihe, jossa viitataan mainittuun osoitteiden vastaavuustauluun lisäksi käsittää rajakäskyjen bittikartan selauksen mainitussa bittikartassa olevan, ensimmäistä osoitetta vastaavan ensimmäisen paikan ja bittikartassa 25 olevan toisen paikan välillä, joka vastaa toisessa tietokoneohjelmassa olevaa osoitetta, joka on osoitteiden vastaavuustaulussa olevassa tiedossa, mainitussa bittikartassa ensimmäisen paikan ja toisen paikan välillä olevien ilmaisujen laskemisen käskylukumäärän saamiseksi, ensimmäisessä tietokoneohjelmassa olevan kolmannen osoitteen lukemisen osoitteiden 30 vastaavuustaulussa olevasta mainitusta tiedosta ja mainitun toisen osoitteen määrittämisen kolmannesta osoitteesta ja mainitusta käskylukumäärästä.
Keksinnön kohteena on myös digitaalinen tietokonejärjestelmä, joka ilmoittaa virheen esiintymisestä sellaisen toisen tietokoneohjelman suorittamisen aikana, joka on ensimmäisen tietokoneohjelman käännös, missä 35 ensimmäinen tietokoneohjelma on kehitetty kääntämällä lähdeohjelma, ensimmäinen tietokoneohjelma sisältää käskyjä ensimmäisestä 8 102219 käskykannasta, joka perustuu ensimmäiseen käskyarkkitehtuuriin, kullakin ensimmäisessä tietokoneohjelmassa olevalla käskyllä on vastaava osoite, toinen tietokoneohjelma sisältää käskyjä toisesta käskykannasta, joka perustuu toiseen käskyarkkitehtuuriin, kullakin toisessa tietokoneohjelmassa 5 olevalla käskyllä on vastaava osoite, jotkin ensimmäisessä tietokoneohjelmassa olevista käskyistä on kukin käännetty vastaaviksi toisessa tietokoneohjelmassa oleviksi useiksi käskyiksi, ja missä mainittu virhe aiheutuu yhden toisessa ohjelmassa olevista mainituista käskyistä suorittamisesta, jolloin järjestelmälle on tunnusomaista se, että mainittu 10 digitaalinen tietokonejärjestelmä käsittää yhdistelmänä: (a) elimen, joka keskeyttää toisen tietokoneohjelman suorittamisen, kun mainittu virhe esiintyy; (b) elimen, joka määrittää mainitun yhden mainituista toisessa tietokoneohjelmassa olevista käskyistä ensimmäisen osoitteen; 15 (c) elimen, joka viittaa osoitteiden vastaavuustauluun sen yhden mainituista ensimmäisessä tietokoneohjelmassa olevista käskyistä toisen osoitteen määrittämiseksi ensimmäisestä osoitteesta, josta mainittu yksi mainituista toisessa tietokoneohjelmassa olevista käskyistä on käännetty; (d) elimen, joka viittaa jäljitysinformaatioon sen mainitussa 20 lähdeohjelmassa olevan lähdekoodin osan tunnistamiseksi, josta mainittu yksi mainituista ensimmäisessä tietokoneohjelmassa ole-vista käskyistä on käännetty; sekä (e) elimen, joka ilmoittaa, että mainittu virhe on esiintynyt ja ilmaisee mainitussa lähdeohjelmassa olevan mainitun lähdekoodin osan, josta mainittu 25 yksi mainituista ensimmäisessä tietokoneohjelmassa olevista käskyistä on käännetty; jolloin mainittu osoitteiden vastaavuustaulu sisältää tietoja, joissa kussakin on ensimmäisessä tietokoneohjelmassa olevan vastaavan käskyn osoite ja toisessa tietokoneohjelmassa olevassa käskykannassa olevan ensimmäisen käskyn osoite, joka toisessa tietokoneohjelmassa oleva 30 käskykanta on käännetty mainitusta vastaavasta ensimmäisessä tietokoneohjelmassa olevasta käskystä; että kaikkien ensimmäisessä tietokoneohjelmassa olevien käskyjen osoitteet eivät sisälly osoitteiden vastaavuustaulussa oleviin tietoihin; (f) jolloin rajakäskyjen bittikartta on kehitetty ensimmäisen 35 tietokoneohjelman kääntämisen aikana toisen tietokoneohjelman saamiseksi, joka rajakäskyjen bittikartta osoittaa sellaiset toisessa tietokoneohjelmassa 9 102219 olevat käskyt, jotka aloittavat ensimmäisessä tietokoneohjelmassa olevista vastaavista käskyistä käännetyt käskykannat; ja että mainittu elin, joka viittaa osoitteiden vastaavuustauluun, lisäksi käsittää elimen, joka selaa rajakäskyjen bittikarttaa mainitussa bittikartassa olevan ensimmäisen paikan, joka vastaa 5 ensimmäistä osoitetta, ja mainitussa bittikartassa olevan toisen paikan välillä, joka vastaa toisessa tietokoneohjelmassa olevaa osoitetta, joka on osoitteiden vastaavuustaulussa olevassa tiedossa, elimen, joka laskee mainitussa bittikartassa ensimmäisen paikan ja toisen paikan välillä olevat ilmaisut käskylukumäärän saamiseksi, elimen, joka lukee osoitteiden 10 vastaavuustaulussa olevasta mainitusta tiedosta ensimmäisessä tietokoneohjelmassa olevan kolmannen osoitteen sekä elimen, joka määrittää toisen osoitteen kolmannesta osoitteesta ja mainitusta käskylukumäärästä.
Lyhyesti sanoen sellaisessa tilanteessa, jossa ensimmäinen tietokoneohjelma on käännetty toisen tietokoneohjelman aikaansaamiseksi, 15 esillä oleva keksintö mahdollistaa toisen ohjelman suorituksen aikana esiintyvästä virheestä raportoimisen ensimmäisen tietokoneohjelman asiayhteydessä. Tämä suoritetaan keskeyttämällä toisen ohjelman suoritus virheen esiintyessä, määrittämällä ensimmäinen osoite, joka on sen toisessa tietokoneohjelmassa olevan käskyn osoite, joka on aiheuttanut virheen, 20 määrittämällä ensimmäisestä käskystä sen ensimmäisessä tietokoneohjelmassa olevan käskyn osoite, josta tietokoneohjelmassa oleva käsky on käännetty, ja ilmoittamalla, että virhe on esiintynyt ja käyttämällä toista osoitetta sen ilmaisemiseksi, että virhe liittyy ensimmäisessä tietokoneohjelmassa olevaan virheeseen.
25 Parhaana pidetään, että toista osoitetta käytetään ilmaisemaan, että virhe liittyy ensimmäisessä tietokoneohjelmassa olevaan käskyyn, viittaamalla siihen jäljitysinformaatioon ja symboliseen nimi-informaatioon, joka on kehitetty, kun ensimmäinen tietokoneohjelma on käännetty lähdekoodista. Jäljitysinformaatioon viitataan lähdekoodin sen rivinumeron osoittamiseksi, 30 josta ensimmäisessä tietokoneohjelmassa oleva käsky on käännetty. Symboliseen nimi-informaatioon viitataan virheeseen liittyvän symbolisen nimen osoittamiseksi, kuten sen rutiinin nimen, joka sisältää ensimmäisessä ohjelmassa olevan käskyn tai käskyn käyttämän muuttujan.
Parhaana pidetyssä suoritusmuodossa ensimmäisessä ohjelmassa 35 olevan käskyn osoite määritetään toisessa ohjelmassa olevan käskyn osoitteesta viittaamalla osoitteiden vastaavuustauluun (address correlation 10 102219 table) sekä rajakäskyjen bittikarttaan (boundary instruction bit map). Osoitteiden vastaavuustaulu sisältää tietueet, joissa kussakin on vastaavan ensimmäisessä ohjelmassa olevan käskyn osoite ja ensimmäisen käskyn osoite siinä käskyjoukossa toisessa ohjelmassa, joka on käännetty mainitusta 5 vastaavasta käskystä. Ensimmäistä käskyä siinä käskyjoukossa toisessa ohjelmassa, joka on käännetty vastaavasta ensimmäisessä ohjelmassa olevasta käskystä, kutsutaan "rajakäskyksi" ("boundary instruction"). Toisessa ohjelmassa olevat rajakäskyt erotetaan muista toisessa ohjelmassa olevista käskyistä rajakäskyjen bittikartassa olevilla lipuilla. Ensimmäisessä ohjelmassa 10 olevan käskyn toisen osoitteen löytämiseksi, joka vastaa ensimmäistä osoitetta toisessa ohjelmassa, osoitteiden vastaavuustaulusta etsitään ensimmäinen osoite toisen osoitteen löytämiseksi suoraan taulusta tai toisin sanoen sen suurimman osoitteen löytämiseksi toisesta ohjelmasta, joka on pienempi kuin ensimmäinen osoite. Jos toista osoitetta ei löydetä suoraan 15 taulusta, käydään läpi rajakäskyjen bittikartta ja lasketaan samalla ensimmäisen osoitteen ja mainitun suurimman osoitteen välillä olevien rajakäskyjen lukumäärä. Toinen osoite löydetään sitten edistämällä käskyn osoitteen osoitinta ja samalla jäsentämällä tämä sama määrä käskyjä ensimmäisessä ohjelmassa alkaen siinä taulukkotietueessa olevasta 20 osoitteesta, joka sisältää myös mainitun suurimman osoitteen.
Piirustusten lyhyt selitys Tämän keksinnön muut tavoitteen ja hyvät puolet käyvät ilmi luettaessa seuraavassa esitetty yksityiskohtainen selitys ja tutkimalla piirustuksia, joissa; 25 kuvio 1 esittää toiminnallista yleislohkokaaviota, joka osoittaa sen yleisen tavan, jolla sovellusohjelmat (a.) luodaan ensimmäisessä tietokonejärjestelmässä (jolla on ensimmäinen käskykanta ja joka on osoitettu X:llä) suoritettavaksi ja (b.) käännetään eri tietokonejärjestelmässä (joka on osoitettu Y:llä) suoritettavaksi, jolla on suhteellisesti supistettu käskykanta; 30 kuvio 2 esittää parhaana pidetyn X-Y-käännösohjelman yleistettyä toiminnallista lohkokaaviota ja yleistietokonejärjestelmää, jossa X-Y-käännösohjelma suoritetaan Y.ssä suoritettavan sovelluskoodin kehittämiseksi, X:n käskyjaotusta käyttäen, syötetystä X:n sovelluskoodista; kuvio 3 esittää edellä kuviossa 2 esitetyn X-Y-käännösohjelman 35 yleistä vuokaaviota; 11 102219 kuvio 4 esittää Y-tietokonejärjestelmän toiminnallista lohkokaaviota, missä Y:n sovelluskoodi saadaan X:n koodin käännöksestä ja ladataan Y-tietokoneeseen suoritettavaksi yhdessä käskyjaotuksen ohjausohjelman (IGC, instruction granularity control) kanssa, joka valvoo Y:n koodin suorittamista X:n 5 käskyjaotuksen säilymisen takaamiseksi; kuviot 5A ja 5B esittävät vuokaavioita, jotka esittävät parhaina pidettyjä IGC-ohjelman suorittamia toimintavaiheita; kuvio 6 esittää kaaviota, joka kuvaa X-Y-koodisten käskyjen kääntämistä ja asynkronisten tapahtumien suhdetta niihin; 10 kuvio 7 on Y-tietokoneessa olevan poikkeuksiin reagoivan laitteiston lohkokaavio; kuvio 8 on kuvion 7 laitteiston ja Y-tietokoneen suorittaman käyttöjärjestelmän poikkeuskäsittelyrutiinin suorittaminen toimintojen vuokaavio; 15 kuvio 9 on Y-tietokoneen käyttäjämoodin poikkeusrutiinin suorittaman proseduurin vuokaavio; kuvio 10 on X-Y-osoitteiden vastaavuustaulun kaavio, joka osoitteiden vastaavuustaulu on kehitetty X-sovelluskoodin Y-sovelluskoodiksi kääntämisen aikana ja jota käytetään X-koodisen käskyn osoitteen 20 saamiseksi, kun Y-koodisen käskyn osoite on annettu, suoritettaessa esillä olevan keksinnön virheraportointimenetelmä; kuvio 11 on kaavio, joka esittää X-sovelluskoodissa olevien käskyjen ja Y-sovelluskoodissa olevien käskyjen sekä kuvion 10 osoitteiden vastaavuustauluun tallennettujen X-osoitteiden ja Y-osoitteiden välistä 25 vastaavuutta; kuvio 12 on rajakäskyjen bittikartan kaavio, joka bittikartta on kehitetty X-sovelluskoodin Y-sovelluskoodiksi kääntämisen aikana ja jota käytetään suoritettaessa parhaana pidetty esillä olevan keksinnön menetelmä; kuvio 13 on vuokaavio proseduurille kuvion 10 X-Y-osoitteiden 30 vastaavuustaulun ja kuvion 12 rajakäskyjen bittikartan käyttämiseksi suoritettaessa parhaan pidetty esillä olevan keksinnön menetelmä; kuvio 14 on testausinformaation lohkokaavio, joka testausinformaatio on kehitetty X-sovellusohjelman lähdekoodin kääntämisen aikana; ja 12 102219 kuvio 15 on vuokaavio proseduurille kuvion 14 testausinformaation käyttämiseksi sen ilmaisemiseksi, että virhe liittyy yhteen X-sovelluskoodissa olevista käskyistä.
Vaikka tällä keksinnöllä on mahdollista olla erilaisia muunnoksia ja 5 vaihtoehtoisia muotoja, sen erityinen suoritusmuoto on esitetty piirustuksissa olevan esimerkin avulla ja se on seuraavassa selitetty yksityiskohtaisesti. On kuitenkin ymmärrettävää, että tarkoituksena ei ole rajoittaa tätä keksintöä paljastettuun erityiseen muotoon, vaan päinvastoin tämän keksinnön on määrä kattaa kaikki ne muunnokset, samanlaisuudet ja vaihtoehdot, jotka kuuluvat 10 tämän keksinnön suojapiiriin, jonka oheiset patenttivaatimukset määrittelevät.
Parhaana pidetyn suoritusmuodon selitys
Kuten kuviossa 1 on esitetty, lähdekoodilla kirjoitettu sovellusohjelma 10 on eräs joukosta sovellusohjelmia, joita pidetään käyttäjän ohjelmakirjastossa X-tietokonejärjestelmässä 12 suorittamista varten. X-15 tietokonejärjestelmän 12 laitteistoarkkitehtuuri on sovitettu toimimaan X-käskykannaila, jota käytetään tuotettaessa ohjelman 10 tai muun käyttäjän kirjastossa olevan sovellusohjelman suoritettava muoto.
Ohjelman 10 sovittamiseksi käytettäväksi Y-tietokonejärjestelmässä 10 on välttämätöntä, että ohjelman 10 suoritettava muoto tuotetaan Y:ssä 20 suoritettavissa olevana koodina 22 käyttäen Y:n käskykantaa, jolle Y-tietokonejärjestelmän 20 laitteistoarkkitehtuuri on sovitettu.
Y-käskykanta käyttää yleensä vähemmän peruskäskyjä kuin mitä X-käskykanta käyttää, ja X-koodin muunnos Y-koodiksi vaatii käskyjen muunnoksen "yhdestä moneksi". X-käskykanta voi olla CISC-käskykanta ja Y-25 käskykanta voi olla RISC-käskykanta. Esimerkiksi, kuten kuviossa 1 erityisesti on kuvaustarkoituksia varten esitetty, X-järjestelmä voi käyttää VAX®-arkkitehtuuria ja Y-järjestelmä voi käyttää supistetun käskykannan arkkitehtuuria, jota kutsutaan RISC-arkkitehtuuriksi Digital Equipment Corporationin piirissä. Digital Equipment Corporationin, esillä olevan 30 patenttihakemuksen haltijan, valmistamassa laitteistossa käytetään kumpaakin arkkitehtuuria.
Kuten kuviossa 1 on esitetty, sovellusohjelma 10 voidaan siirtää Y:ssä suoritettavaksi koodiksi 22 joko epäsuoraa tietä 24 tai suoraa tietä 26. Suora siirto aikaansaadaan käyttämällä Y-kääntäjää 28 ja Y-linkittäjää 30. 35 Tulokseksi saatava Y:ssä suoritettava koodi on osoitettu viitenumerolla 22B.
13 102219
Jos Y-kääntäjää 28 ja Y-linkittäjää 30 ei ole ollenkaan kehitetty tai jos ne muutoin eivät ole käytettävissä tai jos käyttäjä päättää olla käyttämättä suoraa siirtotietä 26 siihen liittyvien huonojen puolien takia, niin voidaan käyttää epäsuoraa tietä 24 X-sovellusohjelman siirtämiseksi Y-järjestelmään 5 sekä ohjelmainvestointien säästöjen että järjestelmän paremman suorituskyvyn saavuttamiseksi.
Epäsuoralla tiellä ohjelma 10 muunnetaan suoritettavaksi koodiksi 14 Y-tietokonejärjestelmälle 12 X-kääntäjän 16 ja X-linkittäjän 18 avulla. Tulos on X:ssä suoritettava koodi 14, joka voi toimia X-tietokonejärjestelmässä 12. 10 X-Y-kääntäjä 32 kääntää X:ssä suoritettavan koodin, joka on merkitty viitenumerolla 22A. Koodin kääntäminen aikaansaadaan siten, että Y-koodin käsittely X-koodin aikaansaamiseksi tapahtuu tarkasti käskyjaotuksen mukaan, vaikka Y-koodi perustuukin supistettuun käskykantaan.
Mieluimmin käytetään koodinkäännösjärjestelmää 40 (kuvio 2) 15 kuvioissa 1 esitetyn kääntäjän 32 toteuttamiseksi. Käännösjärjestelmä 40 käsittää tavanomaisen yleistietokoneen, jossa on suoritin 42, muistijärjestelmä 44 sekä erilaisia syöttö-/tulostuslaitteita (ei esitetty), joiden kautta X-sovelluskoodi 43 syötetään käännettäväksi.
Käännöksen tulokset kehitetään esillä olevan keksinnön mukaan Y-20 koodiksi 45, joka on järjestetty käännettävän koodin laitetakuiden säilyttämiseksi ja erityisesti X-käskyjaotuksen säilyttämiseksi, kun Y-koodi varsinaisesti suoritetaan. Laitteiston CISC-takuista esimerkkinä ovat VAX^-laitetakuut, jotka on esitetty täydellisemmin edellä mainitussa patenttihakemuksessa PD91 -0063/1870-409.
25 Muistijärjestelmä 44 käsittää muiden osien lisäksi tavanomaisen datamuistiosan 46 ja osan 48, johon tietokoneen käyttöjärjestelmä on tallennettu. X-Y-koodinkääntämisessä käytettävä peruselementti on käännösohjelma 50, joka on tallennettu toiseen muistinosaan. Syötetty X-koodi 43 tallennetaan X-koodilistaksi 62. Lisäksi Y-käskyjen sekvensoinnin 30 ohjaamiseksi on tallennettu Y-käskyjen järjestämiskriteerit 52 ja X-Y-käskykoodirakenteet 54 sekä käskyjen operaatiotarkentimien että käskyjen operandien osoitetarkentimien kääntämisen mahdollistamiseksi.
Käännösohjelman 50 yleinen vuokaavio on esitetty parhaana pidetyssä muodossaan kuviossa 3. Lohkossa 60 peräkkäiset käskyt syötetään 35 peräkkäisessä järjestyksessä tallennetusta X-koodilistasta 62 ohjelmasilmukassa 64 käsiteltäväksi.
u 102219
Silmukassa 64 toimintolohko 66 kehittää Y-käskyn operaatio- ja operanditarkentimet, jotka vastaavat kulloinkin käsiteltävää X-käskyä, tallennettujen X-Y-koodirakenteiden 54 (kuvio 2) mukaan. Seuraavaksi, kuten toimintolohko 68 esittää, tulokseksi saatu Y-koodi järjestetään ennalta 5 määrättyjen kriteerien mukaan, jotka helpottavat X:n käskyjaotuksen säilyttämistä Y-koodin myöhemmin tapahtuvan varsinaisen suorittamisen aikana.
Graafinen esitys X-Y-käskyjen kääntämisestä on esitetty kuviossa 6.
10 Jokainen X-käsky yleisesti suorittaa sellaisia alkeistehtäviä kuten syötteiden ottaminen, syötteiden muuntaminen, tulosten asettaminen väliaikaiseen muistiin ja tilan päivityksen suorittaminen muisti- ja rekisteripaikoilla. Kun X-käsky käännetään "moneksi" Y-käskyksi, Y-käskyjen organisoimiseksi käytettävät järjestämiskriteerit 52 (kuvio 2) ovat mieluimmin 15 sellaiset, jotka ryhmittävät ja järjestävät X-käskyt Y-koodissa kulloinkin käännettävän X-käskyn (jaokkeen) osalta seuraavasti: 1. Ensimmäisenä käskyryhmänä G1 Y-koodissa ovat ne käskyt, jotka ottavat syötteitä ja asettavat nämä syötteet väliaikaiseen muistiin.
2. Toisena käskyryhmänä G2 Y-koodissa ovat ne käskyt, jotka 20 operoivat syötteillä, kehittävät muunnettuja tuloksia ja tallentavat nämä tulokset väliaikaiseen muistiin.
3. Kolmantena käskyryhmänä G3 Y-koodissa ovat ne käskyt, jotka päivittävät X:n tilan (muistin tai rekisterin) ja jotka ovat alttiina mahdollisille poikkeuksille (kuten jäljempänä on määritelty).
25 4. Neljäntenä ja viimeisenä käskyryhmänä G4 Y-koodissa ovat ne, jotka päivittävät X:n tilan (muistin tai rekisterin) ja jotka eivät ole alttiina mahdollisille poikkeuksille.
X:n tila käsittää X:n muistin tilan ja X:n rekisterien tilan. X:n muistin tila, jota edustaa viitenumero 94 kuviossa 4, ja X:n rekisterien tila, jota edustaa 30 viitenumero 97, viittaavat vastaavasti siihen Y-koneessa olevaan muisti- ja rekisterirakenteeseen, jossa on varattu sisältämään X-koodin määrittelemät muistipaikat. X:n muistin ja rekisterien tilojen voidaan myös sanoa olevan se muistin tila ja rekisterien tila, jotka ovat X-arkkitehtuurille näkyviä.
Tuloksena Y-käskyjen parhaina pidettyjen organisointikriteerien 35 toteuttamisesta X-Y-koodinkääntämisessä X.n käskyjaotuksen säilyttäminen helpottuu seuraavista syistä: 15 102219 1. Jos asynkroninen tapahtuma esiintyy Y-koodin suorituksen kuluessa minä tahansa ajanhetkenä Y-käskyjen kahden ensimmäisen ryhmän G1 ja G2 suorituksen aikana, kuten nuoli 71 kuvion 6 kaaviossa esittää, niin X:n käskyjaotusta ylläpidetään sallimalla asynkronisen tapahtuman käsittely ja 5 tallentamalla apumuistipaikkaan Y-käskylaskuri PC osoittamaan seuraavaksi paluun jälkeen suoritettavaan Y-käskyyn (Y0 kuviossa 6), joka on X-käskyjen jaokeraja.
Keskeytettäessä kulloisenkin Y-koodisekvenssin suoritus uudelleenyritystä varten X-käskyjaotuksen mahdollinen rikkominen vältetään, 10 koska mahdollinen tilanlukuvirhe vältetään missä tahansa ryhmän G3 käskyssä kulloisessakin Y-koodisekvenssissä. Y-koodin organisoimisen johdosta kuitenkin vain väliaikaiset mustipaikat pyyhitään ja X:n käskyjaotus säilyy, koska kulloisenkin Y-koodisen käskyn suorittamista viivästetään, kunnes se voidaan käsitellä käskyjaotusta noudattaen asynkronisen 15 tapahtuman käsittelyn jälkeen.
2. Jos asynkroninen tapahtuma esiintyy sen jälkeen kun ryhmien G1 ja G2 Y-käskyt on suoritettu ja ellei ryhmässä G3 ole Y-käskyjä tai jos tapahtuma esiintyy kaikkien ryhmään G3 kuuluvien Y-käskyjen suorittamisen jälkeen, kuten nuoli 73 kuviossa 6 esittää, niin asynkronisen tapahtuman 20 suorittamista voidaan vähän viivästää, koska ryhmän G4 käskyt suoritetaan sillä ennakkotiedolla, että mitkään tilapoikkeukset eivät ole mahdollisia. Tällöinkin suoritus aikaansaadaan X:n käskyjaotusta noudattaen.
Siinä tapauksessa, että ryhmään G3 sisältyy useita Y-käskyjä (ei " esitetty kuviossa 6) ja asynkroninen tapahtuma esiintyy sen jälkeen kun yksi 25 Y-käsky on suoritettu, mutta vähintään yksi Y-käsky ryhmässä G3 jää suoritettavaksi, muistin atomisuus voidaan aikaansaada kulloisellakin Y:n käskyjaotuksella X:n käskyjaotuksen säilyttämiseksi. Muistin atomisuus edellyttää olennaisesti, että kaikki X-käskyn muistiosoitukset näyttävät tapahtuvan tai eivät näytä tapahtuvan, ja on välttämätön X:n käskyjaotuksen “ 30 kannalta.
Muistin atomisuutta ja mekanismeja sen aikaansaamiseksi tällaisissa tapauksissa sekä muissa erikoistapauksissa on täydellisemmin tarkasteltu jätetyssä ja viitteenä mainitussa patenttihakemuksessa (1870 -0409). Parhaana pidetyssä suoritusmuodossa, jossa käsitellään yksinkertaisia 35 yhden kirjoitustoiminnon X-käskyjä, X:n muistin atomisuus ja X:n käskyjaotus aikaansaadaan rinnakkain.
16 102219
Kuvion 3 mukaan, kun toimintolohko 68 järjestää Y-käskykoodin kuten selitetty, lohko 70 ratkaisee, onko kulloinenkin Y-käsky rajamerkki "X-jaokkeen" merkki sillä käskyllä, josta se on johdettu. Peräkkäin käsitellyillä Y-käskyillä ilmaistut kyllä- ja ei-bitit toimintolohko 72 tallentaa X-rajakäskyjen 5 bittikarttaan.
Testauslohko 74 tarkistaa, onko listassa vielä X-käskyjä käännöskäsittelyä varten. Jos on, silmukka 64 toistetaan. Kun kaikki X-käskyt on käännetty, silmukan kiertäminen lopetetaan ja kertynyt Y-koodi asetetaan käytettäväksi tulostusta varten kuten toimintolohko 76 esittää.
10 Seuraavat kaksi erityistä CISC-käskyn esimerkkiä VAXC- arkkitehtuurista valaisevat tämän keksinnön mukaista käännöstoimintaa:
Esimerkki 1: INCL (R1)+ Tämä käsky lisää 1:n muistissa pitkään sanaan (longword; 4-15 tavuinen eli 32 bittiä), jonka osoite on R1:ssä. R1:tä kasvatetaan tällöin osoittamaan seuraavaan pitkään sanaan. Seuraavan RISC (Y) -koodin on kehittänyt kääntäjä, joka toimii selitettyjen organisaatiokriteerien mukaan:
Idi r23,(r1) ; Lataa osoitteesta (R1) muistisisältö R23:een 20 addl r23,#1,r24 ; Kasvata R23:a 1:llä ja pane R24:ään stl r24,(r1) ; Tallenna R24 muistiin osoitteeseen (R1)
Ida r1,4(r1) ; Kasvata R1:tä 4:llä 25 osoittamaan seuraavaan pitkään sanaan
Esimerkki 2: MOVL (R1)+, (R2)+ Tämä käsky siirtää pitkän sanan RT.n sisällön osoittamasta 30 muistista R2:n sisällön osoittamaan pitkään sanaan. Sekä R1:tä että R2:ta kasvatetaan osoittamaan seuraavaan käskyn alkaessa alun perin osoitetun sanan jäljessä olevaan sanaan. Seuraava RISC (Y) -koodi on kehitetty kääntäjästä, joka toimii selitetyn organisaatiokriteerin mukaan:
Idi r23,(r1) ; Lataa muistin sisältö 102219 17 (R1):stä R23:een stl r23,(r2) ; Tallenna R23:n sisältö muistiin paikkaan (R2)
Ida r1,4(r1) ; Kasvata R1:tä 4:llä 5 osoittamaan seuraavaan pitkään sanaan
Ida r2,4(r2) ; Kasvata R2:ta 4:llä osoittamaan seuraavaan pitkään sanaan 10
Tulokseksi saadun Y-koodin suorittamiseksi taatulla X:n käskyjaotuksella käytetään Y-suoritinta 80, joka vastaa Y-tietokonejärjestelmää 20 (kuvio 1), joka suorittaa Y-koodin X:n käskyjaotuksella, jonka säilyminen on taattu. Tavanomaiset datansyöttö-15 /tulostuslaitteet 82 ja ajastuskello 84 on kytketty Y-suorittimeen 80, ja aika ajoittain nämä laitteet kehittävät keskeytyksiä, jotka muodostavat asynkronisia . tapahtumia, jotka vaativat suoritinta tilapäisesti poikkeamaan Y-koodin suorittamisesta, (kuvio 4) Ilman taattua X:n käskyjaotusta näiden tai muiden keskeytysten aiheuttama suorittimen poikkeaminen pystyy aiheuttamaan X:n 20 käskyjaotuksen katkeamisen Y-koodin suorittamisessa. Tämä tapahtuu tyypillisesti siksi, koska mahdollinen Y-käskyn syöttö tapahtuu keskeytyksen jälkeen, mutta ennen kuin kulloinenkin Y-käsky on tehnyt muistin tilanmuutokset.
Kuten kuviossa 4 on esitetty, lohko 86 edustaa kehitetyn Y-koodin 25 syöttämistä syöttölaitteelta Y-suorittimeen 80 kytketyn muistijärjestelmän 90 osaan 88, ja lohko 87 edustaa tulostuslaitteille Y-koodin suorituksen tuloksena kehitettyjä datatulosteita. Muistijärjestelmä 90 käsittää myös tavanomaisen dataosan 92 ja tavanomaisen käyttöjärjestelmäosan 94.
·; Käskyjaotuksen ohjausohjelma (IGC, instruction granularity control 30 program) 96 on tallennettu toiseen muistinosaan, joka on osoitettu samalla viitenumerolla. IGC-ohjelman 96 toiminta Y-koodin suorituksessa on täydellisemmin esitetty kuvioissa 5A ja 5B esitetyissä vuokaavioissa.
IGC-ohjelma 96 (kuvio 5A) alkaa, kuten 98:ssa on esitetty, asynkronisen tapahtuman kehittämisellä. Yleisesti asynkroninen tapahtuma on 102219 18 määritelty poikkeamisena Y-käskyvirrasta keskeytysten takia, jotka voisivat mahdollisesti kehittää X:n tilanmuutoksia, jotka ovat käännetylle X-koodille näkyviä. Viittaamme jälleen kuvioon 6, mitä tulee asynkronisten tapahtumien ja Y-käskyjen X-jaokkeen suhteen kaaviolliseen esittämiseen. Seuraavassa on 5 esimerkin avulla valaistu asynkronisen tapahtuman vuorovaikutusta Y-käskyvirran kanssa.
Normaali suoritus: YO Y1 Y2 Y3 Y4 Y5 X-käskyraja-----------Λ—Λ—Λ-
Asynkr. tapahtuman suoritus: YO Y1 Y47 Y48 Y49 10 Tapahtuma esiintyy---------------Λ IGC-ohjelman 96 täytyy kohdentaa Y-käskyn osoite Y1:een osoittavaksi (jos Y2:lla on mahdollinen poikkeus kuten jäljempänä on määritelty) tai Y3:een osoittavaksi (suorittamalla Y2, jos Y2:lla ei ole mahdollisia poikkeuksia) ennen minkään muiden muutosten suorittamista X:n 15 tilassa.
Tarkastellaan uudelleen kuviossa 5A esitettyä vuokaaviota, jossa on asetettu tilapäinen esto toimintolohkon 100 suorittamalle asynkronisen tapahtuman käsittelylle, ja toimintolohko 102 tallentaa asynkronisen tapahtuman ajanhetkellä käsiteltävän Y-käskyn muistiosoitteen (merkitty PC-20 AE:ksi).
Seuraavaksi lohko 104 tarkistaa edellä mainitun bittikartan ja ratkaisee, onko Y-käsky PC-AE X-käskyraja. Jos se on, testauslohko 106 ohjaa IGC-ohjelman haaran 107 kautta lohkoon 108, joka sallii asynkronisen tapahtuman käsittelyn jatkamisen katkaisematta X-koodin käskyjaotusta.
25 Jos Y-käsky PC-AE ei ole X-käskyraja, toimintolohko 110 kohdentaa Y:n käskylaskurin PC osoittamaan lähinnä edelliseen tai myötäsuunnassa seuraavaksi tulevaan sellaiseen Y-käskyyn, joka on X-käskyraja. Tämän jälkeen IGC-ohjelma kulkee ohjelmahaaraa 111 lohkoon 108 asynkronisen tapahtuman käsittelemiseksi kuten edellä on selitetty, 30 tässäkin katkaisematta X-koodin käskyjaotusta. Tässä tapauksessa asynkroninen tapahtuma on esiintynyt sellaisena ajankohtana, jolloin kaikkia Y-käskyjä X:n käskyjaotuksella ei ole suoritettu, ja X:n käskyjaotuksen säilyminen aikaansaadaan ohjelmalohkon 110 toiminnan avulla, kuten kuviossa 5B on yksityiskohtaisemmin esitetty. Merkit "A" ja "B" kuviossa 5A 35 osoittavat, missä kuvion 5B detaljilohkot liittyvät kuvion 5A vuokaavioon.
102219 19
Kuviossa 5B toimintalohko 112 ohjelmasilmukassa 113 suorittaa Y-käskyjen myötäsuuntaisen selauksen löytääkseen seuraavan Y-käskyn, joka on X-käskyraja. Testauslohko 114 tarkistaa jokaisen myötäsuunnassa selatun Y-käskyn ja ratkaisee, voisiko keskeytyksen käsittely ennen jäljellä olevien Y-5 käskyjen suorittamista tuottaa Y-koodin sellaisen käsittelytuloksen, joka olisi erilainen kuin se tulos, joka saataisiin, jos vastaava X-koodi suoritettaisiin saman asynkronisen tapahtuman vaikuttaessa.
Suorittaessaan kunkin myötäsuunnan Y-käskyn testauksen testauslohko 114 mieluimmin ratkaisee, voitaisiinko poikkeusehto tuottaa Υιό käskyn suoritusyrityksellä, jos asynkronisen tapahtuman käsittely sallittaisiin ja Y-koodisekvenssin suoritus tällöin peruuntuisi. Yleisesti käskyllä on poikkeus, jos sitä mahdollisesti ei voida suorittaa loppuun. Seuraavat ovat ne yleiset poikkeusluokat, jotka jos ne samaistuvat myötäsuunnan Y-käskyyn, kehittävät Y-koodin keskeytyksen lähinnä edelliselle Y-käskylle, joka on X-raja: 15 1 .)Muistinohjauspoikkeukset, kuten osoituksen ohjauksen loukkaukset tai sivuvirheet.
2. )Aritmeettiset poikkeukset, kuten liukulukujen ylivuotovirheet tai nollalla jako -virheet.
3. )Käskypoikkeukset, kuten luvattomat operaatiokoodit tai 20 pysäytyskohtaoperaatiokoodit.
Tämän keksinnön parhaana pidetyssä suoritusmuodossa luettelo kysymykseen tulevista poikkeuksista käännettävällä koodilla on asetettu muistiin, johon IGC-ohjelmalla on pääsy suorituksen aikana. Suorituspäätökset tehdään siten tarkistamalla kukin myötäsuunnassa selattu Y-käsky 25 tallennettua poikkeusluetteloa vastaan.
Seuraavassa on esimerkki poikkeustapauksesta.
Asynkroninen tapahtuma kasvattaa yhteistä muistipaikkaa.
INCL @#33 kasvattaa paikkaa 33.
RISC-käskyt ovat: 30 LDL R23,33(R31) ; Lataa R23 paikasta 33 LDA R23,1(R23) ; Lisää 1 R23:n sisältöön STL R23,33(R31) ; Tallenna R23:n tulos takaisin paikkaan 33
Jos asynkroninen tapahtuma esiintyy käskyjen LDA ja STA välillä ja 35 jos asynkronisen tapahtuman käsittely kasvattaa muistipaikkaa 33, niin tämän 102219 20
tapahtuman aikana tehty lisäys menetettäisiin, kun käskyvirta palaa käskyyn STL
Seuraavassa on esimerkki ei-poikkeustapauksesta.
Käsky INCL R1 kasvattaa R1:tä. RISC-käsky on: 5 LDAR1,1(R1) ; Kasvata R1 itä Tässä ei ole poikkeuksen mahdollisuutta.
Jos testattaessa peräkkäisiä Y-käskyjä myötäsuuntaisessa selauksessa selatut Y-käskyt eivät osoita poikkeuksia (lohko 116), jäljellä olevat Y-käskyt suoritetaan ennen kuin lohko 108 (kuvio 5A) sallii 10 asynkronisen tapahtuman käsittelyn katkaisematta X:n käskyjaotusta, kuten edellä on selitetty. Toisaalta jos myötäsuunnassa selattu Y-käsky osoittaa poikkeusta lohkon 118 suorittamassa testauksessa, toimintolohko 118 asettaa Y-ohjelmalaskurin osoittamaan seuraavaksi apumuistipaikan osoittamaan Y-käskyyn, joka on X-käskyraja, ja lohko 108 (kuvio 5A) sallii jälleen 15 asynkronisen tapahtuman käsittelyn katkaisematta X:n käskyjaotusta. Tällä tavoin vältetään myös katkoksen mahdollisuus X:n käskyjaotuksessa ja taataan siten X:n käskyjaotus.
Yhteenvetona todetaan, että tapauksessa, jossa käännetään käsky, jolla ei ole tilakirjoituksia tai vain yksi kohdennettu koko pitkän sanan tai neljän 20 sanan kirjoitus, ei ole tavu- tai kohdentamaton tavu -ongelmia eikä lukittumisongelmia. Ainoa ongelma on saada joko koko sekvenssi suoritetuksi tai jättää koko sekvenssi suorittamatta. Käännös on rajoitettu siten, että CISC-RlSC-käännöksen tapauksessa RISC-käskyjen ensimmäinen ja toinen ryhmä tekevät kaiken CISC-käskyn työn lukuunottamatta muistin ja/tai rekisterin tilan 25 päivitystä, RISC-käskyjen kolmas ryhmä ei sisällä yhtään tai sisältää yhden RISC-tallennuskäskyn täysin kohdennettuun pitkään sanaan tai neljään sanaan, ja RISC-käskyjen neljäs ryhmä sisältää vain yksinkertaisia rekisterisiirtoja.
Käännetty sekvenssi, joka keskeytetään ennen kuin toinen 30 käskyryhmä on suoritettu, pakotetaan alkamaan uudelleen sekvenssin alusta käyttämällä bittitaulua, joka merkitsee koodin alun jokaisella käännetyllä CISC-käskyllä. Käännetty sekvenssi, joka keskeytetään sen jälkeen kun toinen käskyryhmä on suoritettu, mutta ennen kuin kolmas käskyryhmä on suoritettu, pakotetaan suorittamaan loppuun kolmas käskyryhmä, jossa on yksinkertaisia 35 rekisterisiirtoja.
102219 21
Nettovaikutus on että sekvenssi joko suoritetaan alusta loppuun ilman, että välissä on mitään muuta käännettyä sekvenssiä, tai sen suoritusta lykätään ennen ryhmän 2 loppuun suorittamista ja sitä yritetään myöhemmin uudelleen alusta. Tämä tapaus pätee myös 1- tai 2-tavuiselle ei-lukitulle 5 kirjoitukselle yksisuoritinkoneessa. Käännetty sekvenssi sisältää tilan luku-muutos-kirjoitussekvenssin, ja tämä yksi ainoa kirjoitus on ryhmän 3 käsky.
Esillä oleva keksintö koskee erityisesti menetelmää kuvion 1 Y-tietokonejärjestelmän 20 käyttämiseksi sellaisen Y-tietokoneohjelman suorittamisen aikana, joka on X-tietokoneohjelman käännös. Toisin sanoen 10 esillä oleva keksintö koskee erityisesti virheraportointia, kun lähdekoodiohjelma 10 on siirretty Y:ssä suoritettavaksi koodiksi pitkin epäsuoraa tietä 24. Tässä tilanteessa X-kääntäjän 16 tyypillisesti kehittämä testausinformaatio käsittää käskyjen osoitteet X.ssä suoritettavassa koodissa. Kuten jäljempänä on lähemmin selitetty, poikkeuslaitteisto ja Y:ssä 15 suoritettava koodi 22A on organisoitu ja toimii Y-koodin osoitteilla. Esillä oleva keksintö aikaansaa yhteyden virheen aiheuttavan Y-koodisen käskyn ensimmäisen osoitteen ja sen X-koodisen käskyn toisen osoitteen välille, josta Y-koodinen käsky on käännetty. Tätä yhteyttä käytetään virheenkäsittelyproseduurissa, joka alkaa Y-suorittimen (80 kuviossa 4) 20 laitteistossa esiintyvällä poikkeussignaalilla ja päättyy X-koodisen käskyn ilmaisemiseen liittyvään virheestä raportoimiseen.
Tarkastellaan seuraavaksi kuviota 7, jossa on esitetty Y-suorittimessa (80 kuviossa 4) oleva, yleisesti 130:11a merkitty laitteisto, joka reagoi missä tahansa poikkeussisäänmenossa 131 esiintyvään vastaavaan 25 poikkeussignaaliin. Poikkeussignaalit voivat käsittää esimerkiksi pariteettivirhesignaalit, jotka ilmaisevat laitevirheitä, muistipoikkeukset, jotka aiheutuvat muistiosoitekäskyistä, sekä aritmeettis-loogisesta yksiköstä 132 peräisin olevat aritmeettiset poikkeukset, jotka aiheutuvat aritmeettisista käskyistä.
30 Esillä oleva keksintö koskee erityisesti sellaisten sovellusohjelmavirheiden raportointia, jotka kehittävät poikkeuksia, kuten aritmeettiset poikkeukset aritmeettis-loogisesta yksiköstä 132. Aritmeettiset poikkeukset käsittävät esimerkiksi kokonaisluvun tai liukuluvun ylivuodon, jossa tulos on liian suuri tallennettavaksi ennalta määriteltyyn kokonaisluku- tai 35 liukulukumuotoon, kokonaisluvun tai liukuluvun jakamisen 0:lla, missä syötetty 102219 22 jakaja on nolla, sekä liukuluvun alivuodon, jossa tulos on liian pieni ilmaistavaksi ennalta määritellyn liukulukumuodon avulla.
Aritmeettis-looginen yksikkö 132 havaitsee aritmeettisten poikkeustilanteiden esiintymisen aritmeettista operaatiota suoritettaessa.
5 Jotkin Y-koodiset käskyt kuitenkin estävät poikkeustilannetta kehittämästä poikkeussignaalia ja toiset Y-koodiset käskyt sallivat aritmeettisen poikkeustilanteen kehittää poikkeussignaalin. Tätä toimintoa esittää kuviossa 7 JA-portti 133.
Y-suoritin pystyy reagoimaan vain yhteen poikkeussisäänmenoon 10 kerrallaan. Useiden samanaikaisten poikkeussignaalien tilanteen käsittelemiseksi poikkeussisäänmenot 131 vastaanotetaan prioriteettikooderiin 134, joka valitsee yhden näistä signaaleista. Prioriteettikooderin 134 antama koodi ilmaisee sen poikkeussignaalin, jolle prioriteetti on annettu.
Poikkeussisäänmenot 131 yhdistetään TAI-portissa 135 15 ohjauslogiikan 136 tunnistaman poikkeussignaalin tuottamiseksi. Ohjauslogiikka 136 lykkää tilapäisesti Y-koodisten käskyjen suoritusta ja ohjaa poikkeukseen liittyvien tietojen keräämistä asianomaisista rekistereistä tai siirtoporteista 137, 138, 139. Poikkeukseen liittyvät tiedot sisältävät "poikkeus-PC:n", joka on poikkeuksen aiheuttaneen käskyn Y-koodin osoite (PC-AE), 20 "poikkeus-PSL:n", joka on ohjelman tilan sisältävä pitkä sana, joka ilmaisee suorittimen tilan poikkeuksen aiheuttaneen käskyn suoritushetkellä, sekä poikkeuksen tyyppi-informaation, joka määrittelee poikkeuksen tyypin. Esimerkiksi aritmeettisen poikkeuksen tapauksessa aritmeettis-looginen yksikkö 132 tuottaa koodin, joka ilmaisee aritmeettisen poikkeuksen tyypin. 25 Vastauksena prioriteetin omaavan poikkeuksen koodiin valitsin 140 valitsee prioriteettikooderin 134 valitseman poikkeuksen tyyppi-informaation.
Ohjauslogiikka 136 aiheuttaa poikkeusinformaation asettamisen peräkkäin dataväylään 141 ja sen pinoamisen ytimen pinomuistiin. Tällöin vastauksena prioriteettikooderin 134 valitseman poikkeuksen koodiin luetaan 30 vastaava poikkeusvektori poikkeuksen vuoronantotaulusta 142 ja ladataan ohjelmalaskuriin 143. Ohjauslogiikka 136 aloittaa sitten käskyn suorituksen ohjelmalaskurissa 143 olevasta poikkeusvektorista alkaen.
Tarkastellaan seuraavaksi kuviota 8, jossa on esitetty yleisesti 150:llä merkitty vuokaavio, joka myös esittää kuvion 7 laitteiston toimintaa 35 poikkeuskäsittelyyn tarkoitettuun käyttöjärjestelmärutiiniin liittyen. Kuten edellä kuviossa 7 on esitetty, kun poikkeus esiintyy, kuvion 7 laitteisto lykkää käskyn 102219 23 suoritusta, kuten kuvion 8 vaiheessa 151 on esitetty, ja asettaa sitten poikkeus-PC:n, poikkeus-PSL:n ja poikkeuksen tyyppi-informaation ytimen moodipinoon, kuten vaiheessa 152 on esitetty, ja lataa sitten ohjelmalaskuriin asianomaisen poikkeusvektorin vuoronantotaulusta, kuten vaiheessa 153 on 5 esitetty. Tässä tapauksessa poikkeusvektori on keskeytyskäsittelijä käyttöjärjestelmän "ydinmoodissa".
Käyttöjärjestelmän poikkeuskäsittelyrutiini alkaa vaiheesta 154 tarkistamalla, onko poikkeus käyttäjäohjelman käsiteltävä "käyttäjämoodin" poikkeus vai ainoastaan käyttöjärjestelmän käsiteltävä poikkeus. Esimerkiksi 10 laitevirhe, joka esiintyy vastauksena käskyn suorittamiselle, ei normaalisti olisi käyttäjämoodin virhe, ja käyttöjärjestelmä käsittelisi tämän poikkeuksen vaiheessa 155. Käyttäjämoodin poikkeuksella vaiheessa 156 se poikkeusinformaatio, joka on asetettu ytimen moodipinoon, sekä Y-suorittimen yleisrekisterien sisältö asetetaan käyttäjän moodipinoon. Lopuksi vaiheessa 15 157 suoritus hyppää käyttäjämoodin poikkeusrutiiniin, joka on määritelty käsittelemään tämä poikkeus.
Tarkastellaan seuraavaksi kuviota 9, jossa on esitetty käyttäjämoodin poikkeusrutiinin vuokaavio 160. Ensimmäisessä vaiheessa 161 kerätään X-koneen tilainformaatio. Toisin sanoen X-koneen tilan 20 yhtenäinen malli rekonstruoidaan Y-koneen rekistereihin ja käyttäjämuistiin. Kuten jäljempänä Y-koodin erityisen esimerkin yhteydessä X-koodisella INCB -(R1) -käskyllä on lähemmin selitetty, X-koodiset käskyt käännetään Y-koodiin sillä tavoin, että X-koneen tilan yhtenäinen malli voidaan rekonstruoida vaiheessa 161. Seuraavaksi vaiheessa 162 poikkeuksen omaavan Y-koodisen 25 käskyn Y-osoite tallennetaan muistipaikkaan Y_ADDR siten, että se on myöhemmin käytettävissä tämän keksinnön menetelmän mukaiseen virheraportointiin.
Vaiheissa 163 ja 164 Y-osoitteen osoitin PC-AE kohdennetaan osoittamaan X:n käskyjen jaokerajaan, kuten edellä kuvion 5A vaiheiden 106 30 ja 110 yhteydessä on selitetty. Tämä voi sallia tilan palautuksen ja ohjelman suorituksen jatkamisen kohdennetusta Y-osoitteen osoittimesta PC-AE, kun on olemassa tilankäsittelyohjelma. Tilankäsittelijän olemassaolo poikkeustyypillä tarkistetaan vaiheessa 165. Jos tällainen tilankäsittelijä on käytettävissä, poikkeus haarautuu tilankäsittelijään vaiheessa 166. Muussa 35 tapauksessa, vaiheessa 167, käyttäjämoodin poikkeusrutiini saa sen X-koodisen käskyn osoitteen, josta virheen aiheuttanut Y-koodinen käsky on 102219 24 käännetty. Parhaana pidetty menetelmä tämän osoitetta Y_ADDR vastaavan X-käskyn osoitteen saamiseksi on lähemmin selitetty jäljempänä kuvvioon 13 viitaten.
Vaiheessa 168 virheestä ilmoitetaan yhdessä siihen liittyvän X-5 käskyn kanssa, jolla on osoitetta Y_ADDR vastaava X-osoite. Parhaana pidetty virheraportointiproseduuri on lähemmin selitetty jäljempänä viitaten kuvioon 15. Yleisesti Y-koodinen ohjelma vaiheen 168 suorittamiseksi saadaan kääntämällä tunnettu X-koodinen ohjelma, joka ilmoittaa virheistä, jotka esiintyvät, kun X-koodiset sovellusohjelmat suoritetaan X-koodisessa 10 tietokonejärjestelmässä ja muuntamalla käännettyä ohjelmaa vähän siten, että se käyttää X-käskyn osoitetta virheen aiheuttaneen käskyn osoitteena ja siten, että mikä tahansa muu X-koneen tilainformaatio, johon se viittaa, on vaiheessa 161 kerätty X-koneen tilainformaatio. Esillä olevan keksinnön eräs tärkeä hyvä puoli siten on, että se sallii olemassa olevien X-koodisten 15 testausrutiinien kääntämisen ja käyttämisen vähän muunnettuna Y-tietokoneessa ajettavien käännettyjen sovellusohjelmien testaamiseen.
Esillä olevan keksinnön parhaana pidetty suoritusmuoto käyttää X-Y-osoitteiden vastaavuustaulua osoitetta Y_ADDR vastaavan X-käskyn osoitteen saamiseksi. Kuten kuviossa 10 on esitetty, X-Y-osoitteiden 20 vastaavuustaulu 170 sisältää tietueet 171, joissa kussakin on vastaavan käskyn osoite 172 X-koodisessa sovellusohjelmassa sekä vastaavan käskyn osoite 173 Y-koodisessa sovellusohjelmassa, joka on käännetty X-koodisesta sovellusohjelmasta. Kukin osoite 172, 173 on esimerkiksi 32-bittinen pitkä sana. Kun taulussa olevaa X-osoitetta vastaava käsky käännetään Y-25 koodisten käskyjen sarjaksi Y-koodiseen sovellusohjelmaan, niin vastaava Y-koodisen käskyn osoite taulukkotietueessa on ensimmäisen tässä käskysarjassa olevan käskyn osoite.
Mieluimmin kaikki käskyjen osoitteet X-koodisessa sovellusohjelmassa eivät sisälly X-Y-osoitteiden vastaavuustauluun 170. 30 Muutoin taulu tulisi hyvin suureksi, mikä kuluttaisi runsaasti muistitilaa ja suurentaisi liiaksi taulukkohakuaikaa. Sen lisäksi että taulua 170 käytetään virheraportointiin esillä olevan keksinnön mukaan, sitä voidaan käyttää X-koodisesta tulkista palaamiseen suoritettaessa X-koodisen sovellusohjelman osittainen käännös. Vaikka täydellinen kääntäminen on aina toivottava, ei aina 35 ole mahdollista suorittaa täydellistä kääntämistä johtuen siitä, että on vaikeata löytää kaikki X-koodisessa sovellusohjelmassa oleva X-koodi. Tässä 102219 25 tilanteessa X-koodin tulkki voi tehokkaasti palata Y-koodin suorittamiseen käännöksessä sikäli kuin X-koodin osoitteet taulussa 170 ovat X-koodin peruslohkojen tulokohtia X-koodisessa sovellusohjelmassa. Kukin peruslohko on peräkkäisten käskyjen sekvenssi, jolla on yksi tunnettu tulokohta 5 peruslohkon alussa. Suoritus siirretään vain peruslohkojen alkuun, ja suoritus siirretään vain peruslohkojen lopusta. Osittaiset käännökset ja tulkin toiminta tällaisessa tilanteessa on lähemmin selitetty edellä viitteenä mainitussa patenttihakemuksessa sarjanumero 07/666 196, joka on jätetty maaliskuun 7. päivänä 1991, otsikkona AUTOMATIC FLOWGRAPH GENERATION FOR 10 PROGRAM ANALYSIS AND TRANSLATION, keksijä Richard L. Sites, joka patenttihakemus on sisällytetty tähän viitteen kautta.
Tarkastellaan seuraavaksi kuviota 11, jossa on esitetty esimerkki X-koodisen sovellusohjelman osasta, jonka nimenä on "MAIN" ja joka on piirretty vuokaavion 180 muotoon ohjelman peruslohkojen esittämiseksi. Ensimmäinen 15 peruslohko käsittää X-KÄSKY-1:n. Toinen peruslohko käsittää X-KÄSKY-2:n, X-KÄSKY-3:n ja X-KÄSKY-4:n. Kolmas peruslohko käsittää X-KÄSKY-5:n. Neljäs peruslohko alkaa X-KÄSKY-6:lla. Kuviossa 11 on esitetty myös X-koodisten käskyjen ja niitä vastaavien Y-koodisten käskyjen Y-KÄSKY-1 - Y-KÄSKY-14 välinen vastaavuus sekä X-koodin ja Y-koodin osoitteet kuvion 10 20 X-Y-osoitteiden vastaavuustaulussa 170.
Tämän keksinnön parhaana pidetty suoritusmuoto käyttää myös rajakäskyjen bittikarttaa osoitetta Y_ADDR vastaavan X-käskyn osoitteen saamiseksi tyypillisessä tilanteessa, jossa osoitetta Y_ADDR ei löydy X-Y-osoitteiden vastaavuustaulun tietueesta.
25 Tarkastellaan seuraavaksi kuviota 12, jossa on esitetty parhaana pidetty muoto rajakäskyjen bittikartalle 185. Yksibittiset liput, kuten lippu 186, on pakattu pitkiin sanoihin, kuten pitkään sanaan 187. Kukin lippu vastaa Y-koodista käskyä, ja kääntäjä (32 kuviossa 1) asettaa lipun, kun vastaava Y-koodinen käsky on rajakäsky.
30 Mieluummin rajakäskyjen bittikartassa 185 olevat liput asetetaan myös osoittamaan "keinotekoisia" käskyjen jaokerajoja VAX® X-koodissa. Se että on toivottavaa ilmaista keinotekoiset käskyjen jaokerajat aiheutuu käännettäessä VAX*) X-koodisia käskyjä, joilla on "tarkat" keskeytyskohdat, RISC Y-koodisiksi käskyiksi, joilla ei ole tarkkoja keskeytyskohtia. Käskyllä on 35 tarkka keskeytyskohta, kun käskyn suoritus tuottaa saman tuloksen, kun syntyy keskeytystilanne (muu kuin poikkeutussignaalin kehittävä), huolimatta 26 102219 siitä, onko keskeytys sallittu vai ei. Parhaana pidetyssä RISC-tietokonejärjestelmässä aritmeettisilla käskyillä ei ole tarkkoja keskeytyskohtia, koska tarvitaan mutkikkaampia piirejä ja enemmän suoritusjaksoja aritmeettisten käskyjen tulosten valmiiksi saamiseksi sen jälkeen kun 5 keskeytystilat on havaittu, mutta jos ohjelmoija haluaa emuloida tarkkoja keskeytyskohtia, se on tehtävissä parilla käskyllä. Toiminta koodataan ensin käskyllä, jolla keskeytykset on estetty, ja sen jälkeen toiminta koodataan toisen kerran käskyllä, jolla keskeytykset on sallittu. X:n käskyjaotuksen säilyttämiseksi RISC Y-koodilla, "drain trap" (DRAINT) -käsky koodataan sen 10 käskyn perään, jonka keskeytykset on sallittu. Koska RISC- tietokonejärjestelmä voisi muutoin suorittaa enemmän kuin yhden käskyn samanaikaisesti, mukaan luettuna se käsky, jonka keskeytykset on sallittu, yhdessä sen käskyn kanssa, joka seuraa käskyä, jonka keskeytykset on sallittu, DRAINT-käsky takaa, että kun keskeytys esiintyy, X-koneen tila 15 voidaan helposti kerätä kuvion 9 vaiheessa 161 X-koneen yhtenäisen tilan muodostamiseksi vastaten käännetyn X-koodisen käskyn loppuunsuorittamista.
Seuraavassa on esitetty erityinen esimerkki X-koodisen käskyn kääntämisestä Y-koodisten käskyjen sarjaksi, joka sisältää Y-koodisen käskyn, 20 jonka keskeytykset on sallittu: .TITLE Inkrementoi tavua esimerkkikoodi ; Seuraava koodi toistaa: INCB -(R1) ; käyttäen VAX^ -atomisuutta ja käyttäen PAL-rutiinia 25 ; tulosten tallentamiseen.
;======>VAX®-jaokeraja BIS R31,R31,R24 ;Nollaa interferenssilukema TOP: RS R31 ;Aseta PAL-rutiinin 30 käyttämä ; lippu keskeytysten tai ; poikkeusten testausta varten LDQU R16,-1 (R1 ^Todennäköisimmin ;kohdentamaton 35 LDA R17,-1(R1) ;Tavujen kohdentamiseksi käytettävä osoite 27 102219 EXTBL R16.R17.R18 ;Tavu OOOOOOOA:han SLL R18,#56,R18 ;Tavu AOOOOOOO:aan BIS R31,#1,R19 ;Paikkavakio 1 SLL R19,#56,R19 ; 10000000 5 ADDQ R18,R19,R16 ;lnkrementoitu B0000000:hen ;(ei keskeytystä) SRL R16,#56,R16 ;Tavu OOOOOOOB:hen CALL_PAL TRN_STB ;Tallenna R16:ssa oleva tavu ;R17:ssä olevaan osoitteeseen 10 BEQ RO,INTERFERE ;Epäonnistui. Tee tästä ;myötähaara haaran ennustuksen puijaamiseksi SUBQ R1,#1,R1 .Suorita autodekrementointi ;(ei keskeytystä) 15 ;======>Keinotekoinen jaokeraja ADDQ/V R18,R19,R16 ;Suorita toiminta uudelleen .mahdollisen ylivuotokeskey-.tyksen saamiseksi DRAINT ;Odota keskeytystä, jos on 20 ;======>VAX®-jaokeraja 25 ; Tarkista ettei silmukkaiteraatioita ole liian monta INTERFERE; ADDQ R24,#1,R241,R24 ;;lnkrementoi ; ;interferenssilukemaa CMPULE R24,#255,R0 ;;Onko tässä oltu 30 ; jonkin aikaa? BNE RO,TOP ;;Yritä uudelleen BUG_CHECK ."Lopetus...
.END
35 102219 28 Tässä esimerkissä ADDQ-käsky esiintyy ensimmäisen kerran keskeytysten ollessa estettynä täydellisen aritmeettisen tuloksen tuottamiseksi ja toisen kerran lähellä Y-koodisten käskyjen sarjan loppua keskeytysten ollessa sallittuna, mitä seuraa DRAINT-käsky. Sen käskyn osoite, joka 5 keskeytykset on estettynä, on osoitettu edellä "keinotekoisena jaokerajana", ja sitä vastaava lippu on asetettu rajakäskyjen bittikartassa. Tämä antaa parantuneen suorituskyvyn keskeytyksiä käsiteltäessä, koska X-koodisen käskyn tulos (muu kuin mahdollinen keskeytys) on valmis keinotekoisella jaokerajalla. Siksi keskeytyksen esiintyessä juuri ennen keskeytyskohtaa 10 PC_AE voidaan kohdentaa keinotekoiseen jaokerajaan kuvion 5A vaiheessa 110 X-koodisen käskyjaotuksen säilyttämiseksi ilman että on kokonaan palattava X-koodisesta käskystä käännetyn Y-koodin alussa olevaan rajakäskyyn.
Tarkastellaan seuraavaksi kuviota 13, jossa on esitetty parhaana 15 pidetyn proseduurin 190 vuokaavio X-Y-osoitteiden vastaavuustaulun (170 kuviossa 10) ja rajakäskyjen bittikartan (185 kuviossa 12) käyttämiseksi Y-koodista osoitetta Y_ADDR vastaavan X-koodisen käskyn osoitteen löytämiseksi. Ensimmäisessä vaiheessa 191 X-Y-osoitteiden vastaavuustaulusta haetaan se taulussa oleva suurin Y-koodinen osoite 20 (Y_ADDR_MAX), joka on pienempi tai yhtäsuuri kuin Y_ADDR. Seuraavaksi vaiheessa 192 muistipaikan X-OSOITE sisältö asetetaan yhtäsuureksi kuin X-koodinen osoite siitä taulukkotietueesta, joka sisältää Y_ADDR_MAX:in. Sitten vaiheessa 193 kuvion 13 proseduuri päättyy halutun X-koodisen osoitteen ollessa osoitteessa X_ADDRESS, kun Y_ADDR_MAX on yhtäsuuri kuin 25 Y_ADDR. Toisaalta vaiheessa 194 muistipaikan COUNT sisältö nollataan osoitteiden Y_ADDR ja Y_ADDR_MAX välillä olevien Y-koodisten rajakäskyjen lukumäärän laskemisen aloittamiseksi. Tämä suoritetaan rajakäskyjen bittikarttaa selattaessa.
Vaiheessa 195 testataan bittikartassa (Y_ADDR):ia vastaavassa 30 paikassa oleva lippu. Kun lippu on asetettu, niin vaiheessa 196 testataan seuraavan käskyn operaatiokoodi (opcode) (paikassa Y ADDR + 4, koska käskyt ovat 4 tavun pituisia Y-käskyarkkitehtuurissa) sen tarkistamiseksi, onko se DRAINT-käsky. Jos näin on asia, käsky osoitteessa Y_ADDR on käsky, jonka keskeytykset on sallittu, ja vastaava lippu, jonka vaiheessa 195 on 35 todettu olevan asetettu, on keinotekoisen jaokerajan lippu. Jos lippu on 102219 29 asetettu, mutta se ei koske keinotekoista jaokerajaa, niin vaiheessa 197 COUNT:ia lisätään yhdellä.
Vaiheessa 198 Y_ADDR:ia pienennetään neljän tavun verran, mikä vastaa RISC Y-koodisen käskyn pituutta. Sen testaamiseksi, onko selaus 5 takaisin Y_ADDR_MAX:iin päättynyt, Y_ADDR:ia verrataan Y_ADDR_MAX:iin, ja jos Y_ADDR on suurempi kuin Y_ADDR_MAX, niin selaus jatkuu vaiheessa 195. Toisaalta vaiheessa 200 COUNT:in arvoa verrataan nollaan. Jos lukema on nolla, X-OSOITTEEN arvo on haluttu X-koodisen käskyn osoite, ja suoritus jatkuu kuvion 9 vaiheessa 198. Toisaalta vaiheessa 201 X-OSOITETTA 10 käytetään X-koodisen käskyn dekoodausosoittimena ja sitä edistetään jäsentämällä yksi X-käsky, ja vaiheessa 202 lukemaa COUNT vähennetään yhdellä. Vaiheita 200, 201 ja 202 toistetaan, kunnes laskettu määrä X-käskyjä on sivuutettu ja X-OSOITE tulee edistetyksi haluttuun osoitteeseen.
Tarkastellaan seuraavaksi kuviota 14, jossa on esitetty sen 15 testausinformaation 220 lohkokaavio, joka on kehitetty, kun X-koodinen sovellusohjelma on käännetty. Jotta olisi mahdollista ilmoittaa se lähdekoodin rivinumero, joka vastaa annettua X-koodisen käskyn osoitetta, testausinformaatio sisältää jäljitysinformaation 221. Jäljitysinformaatio sisältää esimerkiksi kuhunkin lähdekoodin rivinumeroon liittyvien X-koodien 20 osoitealueen tietueiden listan. X-koodin osoitealue ilmaisee niiden X-koodisten käskyjen osoitealueen, jotka on käännetty lähdekoodin riviltä. Jotkin kääntäjät kääntävät erillisiä lähdekoodimoduuleja, jotka linkitetään toisiinsa linkittäjällä (18 kuviossa 1). Tässä tapauksessa kääntäjä kehittää moduulitaulun (ei esitetty), jossa on moduulien nimet ja niihin liittyvien X-koodien osoitealueet 25 sisältävät tietueet. Tässä tapauksessa kääntäjä kehittää myös kullekin moduulille erillisen jäljitysinformaatiotaulun.
Testausinformaatio 220 sisältää lisäksi symbolisen nimi- informaation 222, joka liittää sovelluksen lähdekoodissa esiintyvät symboliset nimet X-koodisessa sovellusohjelmassa käytettyihin muistiosoitteisiin ja 30 pinopaikkoihin. Symbolinen nimi-informaatio sisältää esimerkiksi kuhunkin lähdekoodissa olevaan globaaliseen muuttujaan liittyvän X-koodisen osoitealueen sekä kuhunkin lähdekoodissa olevaan rutiiniin liittyvät X-koodisen osoitealueen tietueet. Lisäksi kuhunkin rutiiniin voi olla liitetty joukko pinokehyspoikkeamatietueita rutiinin kutakin paikallista muuttujaa kohti. 35 Symbolisen nimi-informaation 222 tietueet sisältävät ASCII-koodiset symboliset nimet sisältäviin merkkijonoihin 223 viittaavat osoittimet.
30 102219
Tarkastellaan seuraavaksi kuviota 15, jossa on esitetty parhaana pidetty proseduuri kuvion 14 testausinformaation käyttämiseksi virheraportointiin ja sen liittämiseksi virheen kehittäneen X-koodisen käskyn X-OSOITTEESEEN. Vaiheessa 231 jäljitysinformaation (221 kuviossa 14) 5 tietueista etsitään se tietue, jossa on X-OSOITTEEN sisältävä osoitealue. Kun tällainen tietue on löydetty, niin vaiheessa 232 tietueessa oleva lähdekoodin rivinumero ilmoitetaan ohjelmoijalle tai käyttäjälle. Vaiheessa 233 määritetään virheen tyyppi poikkeuksen tyyppi-informaatiosta ja ilmoitetaan ohjelmoijalle tai käyttäjälle. Seuraavaksi vaiheessa 234 symbolisen nimi-informaation tietueista 10 etsitään virheeseen liittyvä symbolinen nimi. Rutiinien tietueista, esimerkiksi, etsitään tietue, jonka osoitealue sisältää X-OSOITTEEN. Jos siihen liittyvän rutiinin nimi löytyy, se ilmoitetaan vaiheessa 235 yhdessä sen tyypin ja sen ASCII-merkkijonon kanssa. Vaiheessa 236, jos symbolinen nimi on aliohjelma, virheraportointi jatkuu vaiheeseen 237. Vaiheessa 237 X-koneen 15 tilainformaatiossa (kerätty kuvion 9 vaiheessa 161) oleva pino tutkitaan aliohjelmaan päättyvän kutsuvien rutiinien jäljitysketjun saamiseksi, joka ilmoitetaan ohjelmoijalle tai käyttäjälle.
Vaiheissa 234 ja 235 voidaan myös etsiä ja ilmoittaa virheeseen liittyvät globaaliset ja paikalliset muuttujat. Esimerkiksi aritmeettisen ylivuoto-20 tai alivuotovirheen tapauksessa X-OSOITTEESSA oleva X-koodinen käsky ja muutamat sitä seuraavat käskyt voidaan tutkia yritettäessä tunnistaa sen globaalisen tai paikallisen muuttujan tulososoite, johon aritmeettisen operaation tulos tallennetaan. Nollalla jako -virheen tapauksessa voidaan tutkia muutama edeltävä X-koodinen käsky yritettäessä tunnistaa sen 25 globaalisen tai paikallisen muuttujan lähdeosoite, josta jakaja on lähtöisin.
Esimerkkeihin virhesanomista, jotka voitaisiin raportoida käyttäen kuvion 15 proseduureja, sisältyy seuraavanlaisia: RIVI 200 KOKONAISLUVUN YLIVUOTO ALIOHJELMASSA "DIVIDEND" KUTSUTTAESSA RUTIINISTA "MAIN" RIVILLÄ 50, TULOS 30 TALLENNETAAN PAIKALLISEEN MUUTTUJAAN "TOTAL".
RIVI 500 LIUKULUVUN NOLLALLA JAKO ALIOHJELMASSA "STOCK" KUTSUTTAESSA RUTIINISTA "MAIN" RIVILLÄ 75, JAKAJA GLOBAALISESTA MUUTTUJASTA "SHARES".
Edellä esitetyn valossa on selitetty menetelmä ja järjestelmä, joka 35 raportoi Y-koodisen sovellusohjelman suorituksen aikana esiintyvästä virheestä sen X-koodisen sovellusohjelman asiayhteydessä, josta Y-koodinen 31 102219 sovellusohjelma on käännetty. Keksintö antaa virheen aiheuttanutta Y-koodista käskyä vastaavan X-koodisen käskyn osoitteen X-koodissa yhdessä sitä tilaa koskevan yhtenäisen informaation kanssa, joka X-koneella olisi ollut X-koodisen käskyn suorituksen päätyttyä. Siksi virheraportin voivat antaa ne 5 testausrutiinit, jotka on käännetty X-koodista Y-koodiin ja jotka käyttävät X-koodisen sovellusohjelman lähdekoodin kääntämisen aikana kehitettyä testausinformaatiota.

Claims (9)

32 102219
1. Menetelmä digitaalisen tietokoneen käyttämiseksi ilmoittamaan virheestä, joka esiintyy sellaisen toisen tietokoneohjelman (22A) suorittamisen 5 aikana, joka on ensimmäisen tietokoneohjelman (14) käännös, missä ensimmäinen tietokoneohjelma (14) sisältää käskyjä ensimmäisestä käskykannasta, joka perustuu ensimmäiseen käskyarkkitehtuuriin, kullakin ensimmäisessä tietokoneohjelmassa olevalla käskyllä on vastaava osoite, toinen tietokoneohjelma sisältää käskyjä toisesta käskykannasta, joka 10 perustuu toiseen käskyarkkitehtuuriin, kullakin toisessa tietokoneohjelmassa olevalla käskyllä on vastaava osoite, jotkin ensimmäisessä tietokoneohjelmassa (14) olevista käskyistä on kukin käännetty vastaaviksi useiksi toisessa tietokoneohjelmassa (22A) oleviksi käskyiksi, ja missä mainittu virhe aiheutuu yhden toisessa ohjelmassa olevista käskyistä 15 suorittamisesta, jolloin käskyt ensimmäisestä käskykannasta voidaan korvata yhdellä tai useammalla käskyllä toisesta käskykannasta, tunnettu siitä, että menetelmä käsittää seuraavat vaiheet: (a) keskeytetään toisen tietokoneohjelman (22A) suorittaminen, kun mainittu virhe esiintyy; 20 (b) määritetään mainitun yhden mainitussa toisessa tietokoneohjelmassa (22A) olevan käskyn ensimmäinen osoite (173); (c) viitataan osoitteiden vastaavuustauluun (170) sen yhden mainituista ensimmäisessä tietokoneohjelmassa (14) olevista käskyistä (171) toisen osoitteen (172) määrittämiseksi ensimmäisestä osoitteesta (173), josta 25 mainittu yksi mainituista toisessa tietokoneohjelmassa olevista käskyistä (171) on käännetty; (d) viitataan jäljitysinformaatioon (221) sen mainitussa lähdeohjelmassa (10) olevan lähdekoodin osan tunnistamiseksi, josta mainittu yksi mainituista ensimmäisessä tietokoneohjelmassa (14) olevista käskyistä !. 30 (171) on käännetty; sekä (e) ilmoitetaan, että mainittu virhe on esiintynyt ja ilmaistaan lähdekoodin mainittu osa mainitussa lähdeohjelmassa, josta mainittu yksi mainittu käsky (171) mainitussa tietokoneohjelmassa on käännetty, jolloin osoitteiden vastaavuustaulu (170) sisältää tietoja, joissa kussakin on 35 ensimmäisessä tietokoneohjelmassa olevan vastaavan käskyn osoite ja ensimmäisen käskyn osoite toisessa tietokoneohjelmassa olevassa 33 102219 käskykannassa, joka on käännetty ensimmäisessä tietokoneohjelmassa olevasta vastaavasta käskystä, ja jolloin kaikkien ensimmäisessä tietokoneohjelmassa olevien käskyjen osoitteet eivät sisälly osoitteiden vastaavuustaulussa oleviin tietoihin, 5 (f) jolloin rajakäskyjen bittikartta (185) on kehitetty ensimmäisen tietokoneohjelman (14) kääntämisen aikana, mistä on saatu toinen tietokoneohjelma (22A), joka rajakäskyjen bittikartta (185) ilmaisee sellaiset toisessa tietokoneohjelmassa olevat käskyt, jotka aloittavat ensimmäisessä tietokoneohjelmassa olevista vastaavista käskyistä käännetyt käskykannat, ja 10 että mainittu vaihe, jossa viitataan mainittuun osoitteiden vastaavuustauluun (170) lisäksi käsittää rajakäskyjen bittikartan (185) selauksen mainitussa bittikartassa olevan, ensimmäistä osoitetta (173) vastaavan ensimmäisen paikan ja bittikartassa olevan toisen paikan välillä, joka vastaa toisessa tietokoneohjelmassa olevaa osoitetta, joka on osoitteiden vastaavuustaulussa 15 olevassa tiedossa, mainitussa bittikartassa ensimmäisen paikan ja toisen paikan välillä olevien ilmaisujen laskemisen käskylukumäärän saamiseksi, ensimmäisessä tietokoneohjelmassa olevan kolmannen osoitteen lukemisen osoitteiden vastaavuustaulussa olevasta mainitusta tiedosta ja mainitun toisen osoitteen määrittämisen kolmannesta osoitteesta ja mainitusta käsky-20 lukumäärästä.
2. Patenttivaatimuksen 1 mukainen menetelmä, tunnettu siitä, että symbolinen nimi-informaatio (222) on kehitetty, kun ensimmäinen tietokoneohjelma (14) on käännetty, missä mainittu symbolinen nimi-informaatio (222) liittää lähdeohjelmassa (10) olevat symboliset nimet 25 ensimmäisessä tietokoneohjelmassa (14) oleviin osoitteisiin, ja että menetelmä lisäksi käsittää mainittuun symboliseen nimi-informaatioon viittaamisen mainittuun virheeseen liittyvän symbolisen nimen tunnistamiseksi sekä mainitun symbolisen nimen ilmoittamisen yhdessä mainitun virheen kanssa.
3. Patenttivaatimuksen 2 mukainen menetelmä, tunnettu siitä, että mainittu symbolinen nimi on rutiinin nimi mainitussa lähdeohjelmassa (10), joka sisältää lähdekoodin, josta mainittu yksi mainituista ensimmäisessä tietokoneohjelmassa (14) olevista käskyistä on käännetty.
4. Patenttivaatimuksen 1 mukainen menetelmä, tunnettu siitä, 35 että toinen osoite määritetään kolmannesta osoitteesta jäsentämällä valittu 34 102219 määrä käskyjä kolmannesta osoitteesta alkaen ja että mainittu valittu määrä käskyjä perustuu mainittuun käskylukumäärään.
5. Patenttivaatimuksen 1 mukainen menetelmä, tunnettu siitä, että rajakäskyjen bittikartta (185) sisältää myös sellaisten toisessa 5 tietokoneohjelmassa (22A) olevien käskyjen ilmaisut, joiden keskeytykset on sallittu, ja että sellaisten toisessa tietokoneohjelmassa (22A) olevien käskyjen mainittuja ilmaisuja, joiden keskeytykset on sallittu, ei lasketa mainitussa bittikartassa ensimmäisen ja toisen paikan välillä olevien ilmaisujen laskemisen aikana mainitun käskylukumäärän saamiseksi.
6. Digitaalinen tietokonejärjestelmä, joka ilmoittaa virheen esiintymisestä sellaisen toisen tietokoneohjelman (22A) suorittamisen aikana, joka on ensimmäisen tietokoneohjelman (14) käännös, missä ensimmäinen tietokoneohjelma (14) on kehitetty kääntämällä lähdeohjelma (10), ensimmäinen tietokoneohjelma (14) sisältää käskyjä ensimmäisestä 15 käskykannasta, joka perustuu ensimmäiseen käskyarkkitehtuuriin, kullakin ensimmäisessä tietokoneohjelmassa olevalla käskyllä on vastaava osoite, toinen tietokoneohjelma sisältää käskyjä toisesta käskykannasta, joka perustuu toiseen käskyarkkitehtuuriin, kullakin toisessa tietokoneohjelmassa (22A) olevalla käskyllä on vastaava osoite, jotkin ensimmäisessä 20 tietokoneohjelmassa (14) olevista käskyistä on kukin käännetty vastaaviksi toisessa tietokoneohjelmassa oleviksi useiksi käskyiksi, ja missä mainittu virhe aiheutuu yhden toisessa ohjelmassa olevista mainituista käskyistä suorittamisesta, tunnettu siitä, että mainittu digitaalinen tietokonejärjestelmä käsittää yhdistelmänä: 25 (a) elimen, joka keskeyttää toisen tietokoneohjelman (22A) suorittamisen, kun mainittu virhe esiintyy; (b) elimen, joka määrittää mainitun yhden mainituista toisessa tietokoneohjelmassa (22A) olevista käskyistä ensimmäisen osoitteen (173); (c) elimen, joka viittaa osoitteiden vastaavuustauluun (170) sen 30 yhden mainituista ensimmäisessä tietokoneohjelmassa (14) olevista käskyistä (171) toisen osoitteen (172) määrittämiseksi ensimmäisestä osoitteesta (173), josta mainittu yksi mainituista toisessa tietokoneohjelmassa olevista käskyistä (171) on käännetty; (d) elimen, joka viittaa jäljitysinformaatioon (221) sen mainitussa 35 lähdeohjelmassa (10) olevan lähdekoodin osan tunnistamiseksi, josta mainittu 35 102219 yksi mainituista ensimmäisessä tietokoneohjelmassa (14) olevista käskyistä on käännetty; sekä (e) elimen, joka ilmoittaa, että mainittu virhe on esiintynyt ja ilmaisee mainitussa lähdeohjelmassa olevan mainitun lähdekoodin osan, josta mainittu 5 yksi mainituista ensimmäisessä tietokoneohjelmassa (14) olevista käskyistä (171) on käännetty; jolloin mainittu osoitteiden vastaavuustaulu (170) sisältää tietoja, joissa kussakin on ensimmäisessä tietokoneohjelmassa olevan vastaavan käskyn osoite ja toisessa tietokoneohjelmassa olevassa käskykannassa olevan ensimmäisen käskyn osoite, joka toisessa 10 tietokoneohjelmassa oleva käskykanta on käännetty mainitusta vastaavasta ensimmäisessä tietokone-ohjelmassa olevasta käskystä; että kaikkien ensimmäisessä tietokoneohjelmassa olevien käskyjen osoitteet eivät sisälly osoitteiden vastaavuustaulussa oleviin tietoihin; (f) jolloin rajakäskyjen bittikartta (185) on kehitetty ensimmäisen 15 tietokoneohjelman (14) kääntämisen aikana toisen tietokoneohjelman (22A) saamiseksi, joka rajakäskyjen bittikartta (185) osoittaa sellaiset toisessa tietokoneohjelmassa olevat käskyt, jotka aloittavat ensimmäisessä tietokoneohjelmassa olevista vastaavista käskyistä käännetyt käskykannat; ja että mainittu elin, joka viittaa osoitteiden vastaavuustauluun (170), lisäksi 20 käsittää elimen, joka selaa rajakäskyjen bittikarttaa (185) mainitussa bittikartassa olevan ensimmäisen paikan, joka vastaa ensimmäistä osoitetta, ja mainitussa bittikartassa olevan toisen paikan välillä, joka vastaa toisessa tietokoneohjelmassa olevaa osoitetta, joka on osoitteiden vastaavuustaulussa olevassa tiedossa, elimen, joka laskee mainitussa bittikartassa ensimmäisen 25 paikan ja toisen paikan välillä olevat ilmaisut käskylukumäärän saamiseksi, elimen, joka lukee osoitteiden vastaavuustaulussa olevasta mainitusta tiedosta ensimmäisessä tietokoneohjelmassa olevan kolmannen osoitteen sekä elimen, joka määrittää toisen osoitteen kolmannesta osoitteesta ja mainitusta käskylukumäärästä.
7. Patenttivaatimuksen 6 mukainen digitaalinen tietokone järjestelmä, tunnettu siitä, että se lisäksi käsittää elimen, joka viittaa symboliseen nimi-informaatioon (222) mainittuun virheeseen liittyvän symbolisen nimen tunnistamiseksi sekä mainitun symbolisen nimen ilmoittamiseksi yhdessä mainitun virheen kanssa.
8. Patenttivaatimuksen 6 mukainen digitaalinen tietokone järjestelmä, tunnettu siitä, että elin, joka määrittää toisen osoitteen 36 102219 kolmannesta osoitteesta, sisältää elimen, joka jäsentää valitun määrän käskyjä kolmannesta osoitteesta alkaen, ja että mainittu valittu määrä käskyjä valitaan mainitun käskylukumäärän perusteella.
9. Patenttivaatimuksen 6 mukainen digitaalinen tietokonejärjestelmä 5 tunnettu siitä, että rajakäskyjen bittikartta (185) sisältää myös niiden toisessa tietokoneohjelmassa (22A) olevien käskyjen ilmaisut, joiden keskeytykset on sallittu, ja että mainittu laskemisen suorittava elin ei laske sellaisten toisessa tietokoneohjelmassa (22A) olevien käskyjen ilmaisuja, joiden keskeytykset on sallittu. • < 37 102219
FI925056A 1991-03-07 1992-11-06 Parannettu virheraportointi käännetyn koodin suorittamiseksi FI102219B (fi)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US07/666,025 US5307504A (en) 1991-03-07 1991-03-07 System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US66602591 1991-03-07
US70077091 1991-05-15
US07/700,770 US5432795A (en) 1991-03-07 1991-05-15 System for reporting errors of a translated program and using a boundry instruction bitmap to determine the corresponding instruction address in a source program
PCT/US1992/001714 WO1992015948A1 (en) 1991-03-07 1992-03-03 Improved error reporting for translated code execution
US9201714 1992-03-03

Publications (4)

Publication Number Publication Date
FI925056A0 FI925056A0 (fi) 1992-11-06
FI925056A FI925056A (fi) 1992-11-06
FI102219B1 FI102219B1 (fi) 1998-10-30
FI102219B true FI102219B (fi) 1998-10-30

Family

ID=27099354

Family Applications (1)

Application Number Title Priority Date Filing Date
FI925056A FI102219B (fi) 1991-03-07 1992-11-06 Parannettu virheraportointi käännetyn koodin suorittamiseksi

Country Status (15)

Country Link
US (1) US5432795A (fi)
EP (2) EP0772122A3 (fi)
JP (1) JPH0734178B2 (fi)
KR (1) KR950006619B1 (fi)
AT (1) ATE155905T1 (fi)
AU (1) AU647263B2 (fi)
CA (1) CA2082064C (fi)
DE (1) DE69221041T2 (fi)
FI (1) FI102219B (fi)
IE (1) IE920742A1 (fi)
IL (1) IL100992A (fi)
MX (1) MX9200938A (fi)
NO (1) NO304459B1 (fi)
PT (1) PT100206B (fi)
WO (1) WO1992015948A1 (fi)

Families Citing this family (78)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5673390A (en) * 1992-09-03 1997-09-30 International Business Machines Corporation Method and system for displaying error messages
US5761510A (en) * 1995-11-07 1998-06-02 Microsoft Corporation Method for error identification in a program interface
US5974568A (en) * 1995-11-17 1999-10-26 Mci Communications Corporation Hierarchical error reporting system
US5930509A (en) * 1996-01-29 1999-07-27 Digital Equipment Corporation Method and apparatus for performing binary translation
US5842017A (en) * 1996-01-29 1998-11-24 Digital Equipment Corporation Method and apparatus for forming a translation unit
US6535903B2 (en) 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
US6091897A (en) * 1996-01-29 2000-07-18 Digital Equipment Corporation Fast translation and execution of a computer program on a non-native architecture by use of background translator
US5802373A (en) * 1996-01-29 1998-09-01 Digital Equipment Corporation Method for providing a pipeline interpreter for a variable length instruction set
US6000028A (en) * 1996-01-29 1999-12-07 Digital Equipment Corporation Means and apparatus for maintaining condition codes in an unevaluated state
US6226789B1 (en) 1996-01-29 2001-05-01 Compaq Computer Corporation Method and apparatus for data flow analysis
US6330691B1 (en) * 1996-02-23 2001-12-11 Institute For The Development Of Emerging Architectures Llc Use of dynamic translation to provide breakpoints in non-writeable object code
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US5764989A (en) * 1996-02-29 1998-06-09 Supercede, Inc. Interactive software development system
US6067413A (en) * 1996-06-13 2000-05-23 Instantations, Inc. Data representation for mixed-language program development
US5754860A (en) * 1996-07-23 1998-05-19 Digital Equipment Corporation Method and apparatus for software testing using a differential testing technique to test compilers
US6314558B1 (en) * 1996-08-27 2001-11-06 Compuware Corporation Byte code instrumentation
US6760903B1 (en) * 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US5987249A (en) 1996-08-27 1999-11-16 Numega Technologies IR code instrumentation
US6721941B1 (en) 1996-08-27 2004-04-13 Compuware Corporation Collection of timing and coverage data through a debugging interface
US5822511A (en) * 1996-09-03 1998-10-13 Motorola, Inc. Smart compare tool and method
US6052530A (en) * 1996-10-09 2000-04-18 Hewlett-Packard Co. Dynamic translation system and method for optimally translating computer code
US5812759A (en) * 1996-11-08 1998-09-22 Allen Bradley Company, Inc. Fault handling with loaded functions
US6071316A (en) * 1997-09-29 2000-06-06 Honeywell Inc. Automated validation and verification of computer software
EP0950216B1 (en) * 1997-10-02 2003-11-26 Koninklijke Philips Electronics N.V. A processing device for executing virtual machine instructions
US6237137B1 (en) * 1997-10-15 2001-05-22 Dell Usa, L.P. Method and system for preventing unauthorized access to a computer program
US6631514B1 (en) * 1998-01-06 2003-10-07 Hewlett-Packard Development, L.P. Emulation system that uses dynamic binary translation and permits the safe speculation of trapping operations
JP3110367B2 (ja) * 1998-01-30 2000-11-20 日本電気アイシーマイコンシステム株式会社 ソースコンバータの処理方法及びソースコンバータ処理プログラムを記録したコンピュータ読み取り可能な記録媒体
US8631066B2 (en) 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US8065504B2 (en) * 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
JP3658514B2 (ja) * 1999-01-28 2005-06-08 富士通株式会社 帳票プログラム作成装置
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6698011B1 (en) * 1999-01-29 2004-02-24 Intel Corporation Isolation of program translation failures
WO2000055953A1 (en) * 1999-03-15 2000-09-21 Smartsan Systems, Inc. System and method of event management and early fault detection
GB2348304B (en) * 1999-03-24 2003-07-09 Ibm Optimising Device Driver Debug Tracing
US6381737B1 (en) * 1999-04-23 2002-04-30 Sun Microsystems, Inc. Automatic adapter/stub generator
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6427232B1 (en) * 1999-06-10 2002-07-30 International Business Machines Corporation Functional debugger for debugging software programs
US6393606B1 (en) * 1999-06-25 2002-05-21 Agilent Technologies, Inc. Inverse assembler
US7254806B1 (en) 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
US6553480B1 (en) * 1999-11-05 2003-04-22 International Business Machines Corporation System and method for managing the execution of instruction groups having multiple executable instructions
US6363523B1 (en) * 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
US6463578B1 (en) * 1999-11-23 2002-10-08 International Business Machines Corporation Systems, methods and computer program products for debugging java server page files using compiled java class file modifications
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US20030121027A1 (en) * 2000-06-23 2003-06-26 Hines Kenneth J. Behavioral abstractions for debugging coordination-centric software designs
GB2366399B (en) * 2000-08-26 2005-02-16 Ibm Recognition of command related items in object code
GB2367651B (en) * 2000-10-05 2004-12-29 Advanced Risc Mach Ltd Hardware instruction translation within a processor pipeline
GB2367653B (en) * 2000-10-05 2004-10-20 Advanced Risc Mach Ltd Restarting translated instructions
US7251811B2 (en) * 2002-01-02 2007-07-31 Intel Corporation Controlling compatibility levels of binary translations between instruction set architectures
US7003762B2 (en) * 2002-08-01 2006-02-21 Sas Institute Inc. Computer-implemented exception handling system and method
US7296257B1 (en) * 2002-08-01 2007-11-13 Tymesys Corporation Techniques for exception handling by rewriting dispatch table elements
US7320121B2 (en) * 2002-08-01 2008-01-15 Sas Institute Inc. Computer-implemented system and method for generating embedded code to add functionality to a user application
US20050028146A1 (en) * 2003-08-01 2005-02-03 Quick Shawn G. Systems and methods for software and firmware testing using checkpoint signatures
US7263690B1 (en) * 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7496897B1 (en) 2004-03-17 2009-02-24 Timesys Corporation Multiple code sets for multiple execution contexts
US7546488B2 (en) * 2004-07-02 2009-06-09 Seagate Technology Llc Event logging and analysis in a software system
GB2425372B (en) 2005-04-20 2007-06-13 Transitive Ltd Method and apparatus for precise handling of exceptions during program code conversion
EP1875339A2 (en) * 2005-04-20 2008-01-09 Transitive Limited Method and apparatus for precise handling of exceptions during program code conversion
US7716642B1 (en) 2005-05-03 2010-05-11 Emc Corporation Techniques for detecting coding incompatibilities
US7603669B2 (en) * 2005-09-27 2009-10-13 Microsoft Corporation Upgrade and downgrade of data resource components
US7676806B2 (en) * 2005-09-27 2010-03-09 Microsoft Corporation Deployment, maintenance and configuration of complex hardware and software systems
US7596720B2 (en) * 2005-09-27 2009-09-29 Microsoft Corporation Application health checks
US8689215B2 (en) * 2006-12-19 2014-04-01 Intel Corporation Structured exception handling for application-managed thread units
US8146106B2 (en) * 2007-12-31 2012-03-27 Intel Corporation On-demand emulation via user-level exception handling
US20090271663A1 (en) * 2008-04-24 2009-10-29 Vining Robert G Providing detailed program state information for error analysis
JP5050019B2 (ja) * 2009-08-26 2012-10-17 株式会社東芝 ソースコード解析システム
US10216254B1 (en) 2016-06-29 2019-02-26 Altera Corporation Methods and apparatus for selectively extracting and loading register states
US11809899B2 (en) 2019-06-28 2023-11-07 Intel Corporation Methods and apparatus for accelerating virtual machine migration
CN110765047B (zh) * 2019-10-24 2023-09-26 南方科技大学 基于指令集的数字信号控制系统、fpga模块及方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4500952A (en) * 1980-05-23 1985-02-19 International Business Machines Corporation Mechanism for control of address translation by a program using a plurality of translation tables
JPS61213935A (ja) * 1985-03-18 1986-09-22 Omron Tateisi Electronics Co 高級言語プログラムのデバック装置及びそのステップ方式
JPS6226535A (ja) * 1985-07-22 1987-02-04 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション プログラム内の変換テ−ブルの修正方法
US4791557A (en) * 1985-07-31 1988-12-13 Wang Laboratories, Inc. Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system
JPS62214443A (ja) * 1986-03-17 1987-09-21 Fanuc Ltd エミユレ−シヨン実行方法
US5133072A (en) * 1986-11-13 1992-07-21 Hewlett-Packard Company Method for improved code generation in reduced instruction set computers
JPH01503181A (ja) * 1987-03-24 1989-10-26 インシグニア・ソリューションズ・リミテッド コンピュータ
US4855905A (en) * 1987-04-29 1989-08-08 International Business Machines Corporation Multiprotocol I/O communications controller unit including emulated I/O controllers and tables translation of common commands and device addresses
US5179703A (en) * 1987-11-17 1993-01-12 International Business Machines Corporation Dynamically adaptive environment for computer programs
EP0428560A4 (en) * 1988-07-29 1992-04-01 Hunter Systems Software, Inc. Machine process for translating programs in binary machine language into another binary machine language
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems

Also Published As

Publication number Publication date
ATE155905T1 (de) 1997-08-15
EP0772122A2 (en) 1997-05-07
WO1992015948A1 (en) 1992-09-17
EP0528024B1 (en) 1997-07-23
JPH0734178B2 (ja) 1995-04-12
AU1570592A (en) 1992-10-06
IE920742A1 (en) 1992-09-09
PT100206A (pt) 1994-05-31
FI102219B1 (fi) 1998-10-30
AU647263B2 (en) 1994-03-17
EP0528024A1 (en) 1993-02-24
IL100992A (en) 1995-12-31
CA2082064A1 (en) 1992-09-08
KR950006619B1 (ko) 1995-06-19
DE69221041T2 (de) 1998-01-29
NO304459B1 (no) 1998-12-14
DE69221041D1 (de) 1997-08-28
FI925056A0 (fi) 1992-11-06
US5432795A (en) 1995-07-11
MX9200938A (es) 1993-03-01
CA2082064C (en) 1996-12-31
EP0772122A3 (en) 1997-05-14
FI925056A (fi) 1992-11-06
NO924259L (no) 1993-01-06
PT100206B (pt) 1998-10-30
JPH05505692A (ja) 1993-08-19
NO924259D0 (no) 1992-11-05

Similar Documents

Publication Publication Date Title
FI102219B (fi) Parannettu virheraportointi käännetyn koodin suorittamiseksi
US5307504A (en) System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events
US5598560A (en) Tracking condition codes in translation code for different machine architectures
US5339238A (en) Register usage tracking in translating code for different machine architectures by forward and reverse tracing through the program flow graph
US5301325A (en) Use of stack depth to identify architechture and calling standard dependencies in machine code
US5636366A (en) System and method for preserving instruction state-atomicity for translated program
US5307492A (en) Mapping assembly language argument list references in translating code for different machine architectures
EP0528028B1 (en) Automatic flowgraph generation for program analysis and translation
EP0529059B1 (en) Branch resolution via backward symbolic execution
US5450575A (en) Use of stack depth to identify machine code mistakes
US8266608B2 (en) Post-compile instrumentation of object code for generating execution trace data
US5539907A (en) System for monitoring computer system performance
CN100385399C (zh) 用于多个异常处理模型的中间表示的方法和系统
CA2167306C (en) Multiple entry point method dispatch
EP0528019B1 (en) Method and apparatus for computer code processing in a code translator
Hundt HP Caliper: A framework for performance analysis tools
JPH0766342B2 (ja) プログラムテスト装置
JP3461185B2 (ja) ロードモジュールへのソースコード行番号登録方法および装置
Olaniran Emulation of the intermediate representation in the IMPACT compiler
Yip Implementation of a CORAL66 programming environment
Scarso and why such a substitution may be interesting. I will first discuss the TEX and Lua interpreters. 2 TEX, Lua, LuaJIT 2.1 TEX
Martorell et al. gtrace: function call and memory access traces of dynamically linked programs in IA-32 and IA-64 Linux
EP0215001A1 (en) COMPUTER CONTROLLED BY ADVANCED LANGUAGE.