DE69816381T2 - Vorrichtung zur Unterstützung von Fehlersuche in symbolische Programme und entsprechender Kompiler. - Google Patents

Vorrichtung zur Unterstützung von Fehlersuche in symbolische Programme und entsprechender Kompiler. Download PDF

Info

Publication number
DE69816381T2
DE69816381T2 DE69816381T DE69816381T DE69816381T2 DE 69816381 T2 DE69816381 T2 DE 69816381T2 DE 69816381 T DE69816381 T DE 69816381T DE 69816381 T DE69816381 T DE 69816381T DE 69816381 T2 DE69816381 T2 DE 69816381T2
Authority
DE
Germany
Prior art keywords
constant
long word
division information
address
information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE69816381T
Other languages
English (en)
Other versions
DE69816381D1 (de
Inventor
Akira Sakyo-ku Tanaka
Shuichi Takarazuka-shi Hyogo-ken Takayama
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of DE69816381D1 publication Critical patent/DE69816381D1/de
Application granted granted Critical
Publication of DE69816381T2 publication Critical patent/DE69816381T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Description

  • Diese Erfindung basiert auf einer Anmeldung Nr. 9-234355, angemeldet in Japan.
  • HINTERGRUND DER ERFINDUNG
  • 1. Sachgebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf eine Testhilfevorrichtung bzw. eine Debug-Hilfevorrichtung zum Testen einer Ausführungscodesequenz und zum Fixieren von Programmfehlern, und auch auf eine Programmkompiliervorrichtung zum Erzeugen der Ausführungscodesequenz, die durch die Testhilfevorrichtung bearbeitet werden soll.
  • 2. Beschreibung des Stands der Technik
  • Mikrocomputersysteme sind wesentlich für eine elektronische Ausrüstung von heute. Insbesondere müssen Programme, entwickelt für die Verwendung in elektrischen Haushaltsgeräten, das Niveau einer Qualität erreichen, die für eine Massenproduktion erforderlich ist, und sie müssen vollständig von Fehlern befreit sein. Demzufolge sind Debug- bzw. Fehlersuchhilfevorrichtungen grundsätzlich wichtig geworden, wenn Programme entwickelt werden.
  • Die Testhilfevorrichtungen sind hauptsächlich in drei Typen klassifiziert. Der erste Typ betreibt ein Fehlersuchsollprogramm in einem ROM einer vorgesehenen Maschine. Der zweite Typ betreibt das Fehlersuchsollprogramm auf einer ICE (In-Circuit-Emulator) Leiterplatte (Handelsmarke). Der dritte Typ betreibt das Debug- bzw. Fehlersuchsollprogramm in einer Simulation unter Verwendung eines Simulators in einem Host-Computer.
  • Diese Fehlersuchhilfsvorrichtungen lassen jeweils das Fehlersuchsollprogramm, gespeichert in der vorgesehenen Maschine an gegebenen Adressen, laufen und halten es an. Programmierer können den Prozess von korrigierenden Werten des Speichers und von Registern auf der Host-Computer-Anzeige sehen. Auch können, durch temporäres Ändern von Parametern in dem Fehlersuchsollprogramm, bevor es läuft, Programmierer die Operation des Fehlersuchsollprogramms in verschiedenen Fällen prüfen. Unter Verwendung der Fehlersuchhilfsvorrichtungen, wie dies vorstehend beschrieben ist, können die Programmierer Programmfehler (Bugs) in dem Fehlersuchsollprogramm finden und diagnostizieren.
  • Das Dokument US-A-5 555 419 offenbart ein Korrelationssystem, das mit Vorprozessoren und einem Debugger bzw. Fehlersuchsollprogramm in einem Translationssystem kommuniziert, um Symbole und Codesegmente eines Eingabebenutzerprogramms zu Symbolen und Codesegmenten einer ausführbaren Ausgabeversion des Programms zu korrelieren. Wenn der Benutzer zu dem Fehlersuchsollprogramm eine Anforderung für einen Zwischenwert eines bestimmten Benutzerprogrammsymbols schickt, prüft das Fehlersuchsollprogramm zuerst die Fehlersuchsollprogrammsymboltabelle, um zu bestimmen, ob das Symbol darin definiert ist. Falls dies der Fall ist, bestimmt das Fehlersuchsollprogramm, welches Segment des Quellencodes sich auf die Evaluierung des Symbols bezieht, und extrahiert den variablen Wert von diesem Segment. Das Fehlersuchsollprogramm zeigt dann den Symbolwert und das Benutzerprogrammsegment an.
  • Um Variable oder Unterprogramme, gespeichert in dem Fehlersuchsollprogramm, fehlermäßig zu beheben, spezifiziert ein Programmierer Ausführungscode, ausgedrückt durch hexadezimale Werte, als das Fehlersuch-Ziel, da die Variablen und die Unterprogramme in Ausführungscoden in dem vorgesehenen Fehlersuchsollprogramm geschrieben sind. Dementsprechend sollten die Fehlersuchhilfsvorrichtungen in der Lage sein, mnemonische Code wiederherzustellen, die Quellencode zusammenstellen, und zwar aus den spezifizierten, hexadezimalen Werten (nachfolgend binäre Daten), um die Fehlersuche zu vereinfachen.
  • Eine Testhilfevorrichtung mit der vorstehenden Wederherstellungsfähigkeit kann spezifizierte Ausführungscode in dem Speicher der vorgesehenen Maschine in mnemoni sche Code umwandeln, die leicht durch den Programmierer verstanden werden können. Auch kann der Programmierer die Start- und Stoppadresse des vorgesehenen Fehlersuchsollprogramms durch Unterprogrammnamen, geschrieben in dem Quellenprogramm, und nicht tatsächliche Adressen in dem Speicher der vorgesehenen Maschine, spezifizieren. Ebenso kann der Programmierer Programmvariable spezifizieren, um durch Variable-Namen, geschrieben in dem Quellenprogramm, nach Fehlern durchsucht zu werden, und nicht tatsächliche Adressen in dem Speicher der vorgesehenen Maschine.
  • Allerdings ist es, mit den herkömmlichen Fehlersuchhilfsvorrichtungen, schwierig, einen Ausführungscode fehlermäßig zu durchsuchen, der einem Abschnitt eines Quellenprogramms entspricht, der eine Langwortkonstante umfasst, da Angaben, umfassend eine Langwortkonstante in dem Quellenprogramm, einer Mehrzahl von Ausführungscoden in dem vorgesehenen Fehlersuchsollprogramm entsprechen.
  • Genauer gesagt stellt, wenn das Quellenprogramm eine Angabe mit einer Langwortkonstanten umfasst, eine Programm-Compilier-Vorrichtung nicht die Angabe zusammen, um einen Ausführungscode zu erzeugen, der die Langwortkonstante umfasst. Anstelle davon wird die Langwortkonstante in der Angabe zuerst in eine Mehrzahl von Teilkonstanten unterteilt und die Angabe wird zu einer Mehrzahl von Ausführungscoden zusammengestellt, die die Mehrzahl von Teilkonstanten als Operanden verwendet.
  • Wenn die Mehrzahl von Ausführungscoden, erzeugt als solche zu einer Mehrzahl von mnemonischen Coden in der Debug- bzw. Fehlersuchstufe umgewandelt werden, kann der Programmierer beim Auffinden einer Mehrzahl von fremden Operanden in den mnemonischen Coden verwirrt werden, anstelle der Langwortkonstanten, die ursprünglich nicht in dem Quellenprogramm geschrieben wurde.
  • Auch kann, wenn der Programmierer versucht, die originale Langwortkonstante von Ausführungscoden zu identifizieren, die eine Mehrzahl von Teilkonstanten umfassen, erzeugt von der Langwortkonstanten, der Programmierer diese Teilkonstanten mit anderen Teilkonstanten, erzeugt von einer unterschiedlichen Langwortkonstanten, verwechseln.
  • Auch muss, wenn temporär eine Langwortkonstante in dem Fehlersuchsollprogramm geändert wird, der Programmierer die vorgesehene Maschine so steuern, um eine Mehrzahl von Ausführungscoden zu lesen, die die Mehrzahl von Teilkonstanten umfassen, und zwar von dem Speicher, um so die Langwortkonstante zu identifizieren, die geändert werden soll. Dies erfordert eine umfangreiche Menge an Verarbeitungszeit. Der Programmierer muss auch wissen, an welcher Bitposition die originale Langwortkonstante unterteilt worden ist. Aufgrund dieser Schwierigkeiten gibt es der Programmierer oftmals auf, Langwortkonstanten in der Fehlersuchstufe zu ändern.
  • In der Fehlersuchbearbeitung ist die Instruktionslänge in dem Fehlersuchsollprogramm so festgelegt, dass der Prozessor Instruktionen unter einer hohen Geschwindigkeit ausführt. Zum Beispiel verwenden Prozessoren, eingebaut in SPARC (Scalable Processor ARChitecture) Arbeitsstationen, entwickelt von Sun Microsystems Inc., die festgelegte Instruktionslänge mit 32 Bit. Jede 32-Bit-Konstante, umfasst in Quellenprogrammen, entwickelt zur Verwendung in diesen Prozessoren, wird zuerst in zwei Teilkonstanten von Bits hoher Ordnung und Bits niedriger Ordnung unterteilt und dann in zwei Ausführungscoden zusammengestellt.
  • 1 stellt ein Ergebnis einer Ausführung eines Rückumwandlungsbefehls in Bezug auf vier Ausführungscode, geschrieben in Adressen 0x80000000 bis 0x8000000F unter Verwendung eines SPARC Prozessors, dar. In der 4 drücken die vier Ausführungscode eine Instruktion zum Zuordnen einer Konstanten „0x12345A32" zu einer Variablen a, gespeichert in einer Adresse 0x00001000, aus. Wie in der Figur dargestellt ist, wird ein Fehlersuchbefehl zum Anzeigen einer Liste von „sethi %hi (0x12345800), %o0" zu „st %o0, [%o1+0x000]" eingegeben. Die Spalten von links nach rechts zeigen Zeilenzahlen entsprechend zu dem Quellenprogramm, Ausführungscodeadressen, Ausführungscode in einer Maschinensprache und mnemonischen Coden als die Rückumwandlungsergebnisse.
  • Der mnemonische Code „sethi %hi (0x12345800), %o0" stellt eine Instruktion zum Speichern von 22 Bits hoher Ordnung der Konstanten „0x12345A32" in ein Register %o0 dar. Der mnemonische Code „or %o0,232,%o0" stellt eine Instruktion zum Durchführen einer Oder-Operation in Bezug auf den Wert des Registers %o0 und einen Konstanten-Operanden „232" und Speichern des Operationsergebnisses in das Register %o0 hinein dar. Der mnemonische Code „sethi %hi (0x00001000), %o1" stellt eine Instruktion zum Speichern einer Konstanten „0x00001000" in ein Register %o1 hinein dar. Der mnemonische Code „st %o0, [%o1+0x000]" stellt eine Instruktion zum Speichern des Werts des Registers %o0 in eine Adresse hinein, spezifiziert durch den Wert eines Registers %o1, und einen Konstanten-Operanden „0x000", dar.
  • Unter den vorstehenden Instruktionen umfassen „sethi %hi (o0x12345800), %o0" und „or %o0,232,%o0" jeweils eine 22-Bit Teilkonstante „0x12345800" und eine 10-Bit Teilkonstante „0x232". Dies zeigt an, dass die 32-Bit Konstante „0x12345A32", ursprünglich geschrieben in dem Quellenprogramm, in die zwei Teilkonstanten unterteilt worden ist und dann in den Speicher der vorgesehenen Maschine hinein geladen ist, da sie die festgelegte Instruktionslänge, spezifiziert für den Prozessor, anpasst. In derselben Art und Weise zeigen „sethi %hi (o0x00001000), %o1" und „st %o0, [%01+0x000]", dass die Adresse 0x00001000 einer Variablen a in die zwei Teilkonstanten unterteilt worden ist, bevor sie in den Speicher hinein geladen worden ist.
  • Falls der Programmierer die Kenntnis hat, dass jede 32-Bit Konstante in dem Quellenprogramm in die 22 Bits hoher Ordnung und die 10 Bits niedriger Ordnung hinein unterteilt worden ist, ist es nicht möglich, die Original-Konstante entsprechend dem mnemonischen Code „sethi %hi (o0x12345800), %o0" und „or %o0,232,%o0" zu erfassen. Allerdings ist es, wenn Konstanten mit 32-Bit gemäß einer Vielzahl von Unterteilungsmustern unterteilt werden, wie beispielsweise „4, 4, 4, 20" und „8, 24", schwieriger und zeitaufwendiger, die originale Konstante zu erfassen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die erste Aufgabe der vorliegenden Erfindung ist es, eine Test- bzw. Fehlersuchhilfevorrichtung zu schalten, die die Schwierigkeiten löst, die der Programmierer erfährt, wenn er Ausführungscode zurückwandelt, die Teilkonstanten umfassen.
  • Die zweite Aufgabe der vorliegenden Erfindung ist diejenige, eine Testhilfevorrichtung zu schaffen, die die Schwierigkeiten in einer Fehlersuchverarbeitung durch Verhindern löst, dass der Programmierer durch Teilkonstanten verwirrt wird, die von einer Langwortkonstanten erzeugt sind, mit Teilkonstanten, erzeugt von anderen Langwortkonstanten.
  • Die dritte Aufgabe der vorliegenden Erfindung ist es, eine Testhilfevorrichtung zu schaffen, die dem Programmierer ermöglicht, temporär Langwortkonstanten ohne Schwierigkeit zu ändern.
  • Die vierte Aufgabe der vorliegenden Erfindung ist es, eine Programmkompiliervorrichtung zum Erzeugen eines Fehlersuchsollprogramms und von Fehlersuchinformationen zu schaffen, die dem Programmierer ermöglichen, das Fehlersuchsollprogramm besser bzw. schneller nach Fehlern zu durchsuchen.
  • Die erste und die zweite Aufgabe können mit einer Testhilfevorrichtung zur Unter stützung beim Testen einer Ausführungscodesequenz, die in einen Speicher geladen ist, gelöst werden, die umfasst: eine Empfangseinrichtung, die eine Angabe einer Test-Zieladresse von einem Benutzer empfängt; eine Umwandlungseinrichtung, die einen Operationscode in einen Ausführungscode, der in der Test-Zieladresse in den Speicher geladen ist, in einen mnemonischen Code umwandelt; eine Feststelleinrichtung, die, wenn der Ausführungscode einen Konstanten-Operanden enthält, feststellt, ob der Konstanten-Operand eine Teilkonstante ist, die bestimmt wird, indem eine Langwortkonstante geteilt wird; eine Wiederherstellungseinheit, die die Langwortkonstante aus dem Konstanten- Operanden wiederherstellt, wenn es sich bei dem Konstanten-Operanden um die Teilkonstante handelt; und eine Anzeigeeinheit, die den mnemonischen Code mit der Langwortkonstanten anzeigt.
  • Mit dem angegebenen Aufbau wird, wenn ein Ausführungscode eine einer Mehrzahl der Teilkonstanten, erzeugt von einer Langwortkonstanten, umfasst, zuerst die Langwortkonstante von der Teilkonstanten wiederhergestellt, und dann wird die Teilkonstante durch die Langwortkonstante ersetzt. Dementsprechend wird der mnemonische Code mit der Langwortkonstanten angezeigt, die ursprünglich in dem Quellenprogramm durch den Programmierer geschrieben war.
  • Demzufolge kann der Programmierer einfach eine Fehlersuche durchführen, da die Langwortkonstante, ursprünglich geschrieben in dem Quellenprogramm, anstelle der Mehrzahl der Teilkonstanten angezeigt wird. Auch wird der Programmierer nicht durch die Vielzahl der Teilkonstanten in Bezug auf andere Teilkonstanten, erzeugt von einer unterschiedlichen Langwortkonstanten, verwirrt.
  • Die dritte Aufgabe kann durch die Testhilfevorrichtung gelöst werden, wobei die Empfangseinheit eine Änderungsbefehlempfangseinheit zum Empfangen eines Befehls zum Ändern einer Langwortkonstanten in dem Speicher und eine neue Langwortkonstante von dem Benutzer umfasst, und wobei die Testhilfevorrichtung weiterhin umfasst: Eine Unterteilungseinheit zum Unterteilen der neuen Langwortkonstanten in eine Vielzahl von neuen Teilkonstanten gemäß den Bitpositionsinformationen in einem Satz von Konstantenteilungsinformationen.
  • Mit dem angegebenen Aufbau ist es möglich, temporär die Langwortkonstante, ohne Lesen einer Vielzahl von Ausführungscoden zu ändern, die die Vielzahl von Teilkonstanten umfassen, von dem Speicher, zu ändern. Dementsprechend kann die Verarbeitungszeit verringert werden und der Programmierer kann die Langwortkonstante ohne Schwierigkeit ändern.
  • Hierbei kann jeder Satz von Konstantenteilungsinformationen auch Typinformationen enthalten, die zeigen, ob die Langwortkonstante als eine Zahl oder eine Kennung ausgedrückt ist, die die Langwortkonstante in der Quellencodesequenz identifiziert und eine der Zahl und den Identifizierer gemäß den Typinformationen identifiziert, wobei die Anzeigeeinheit umfasst: eine Feststelleinheit, die, wenn es sich bei dem Konstanten-Operanden um die Teilkonstante handelt, unter Bezugnahme auf die Typinformationen in dem Satz von Konstantenteilungsinformationen, der die Teilkonstante zeigt, feststellt, ob die Langwortkonstante als eine Zahl oder eine Kennung in der Quellencodesequenz ausgedrückt ist; eine erste Anzeigeeinheit, die die Kennung anzeigt, die in dem Satz von Konstantenteilungsinformationen gezeigt wird, wenn die Langwortkonstante als die Kennung ausgedrückt ist; eine zweite Anzeigeeinheit, die die Zahl anzeigt, die in der Gruppe von Konstantenkennungsinformationen gezeigt wird, wenn die Langwortkonstante als die Zahl ausgedrückt ist.
  • Mit dem angegebenen Aufbau ist es möglich, zu spezifizieren, ob die Langwortkonstante als die Zahl bzw. die Kennung oder der Identifizierer in der Fehlersuchstufe geschrieben worden ist.
  • Hierbei kann die Wiederherstellungseinheit umfassen: eine Bitlängen-Berechnungseinheit, die eine Differenz-Bitlänge berechnet, indem sie eine Bitlänge des Konstanten-Operanden, der in dem Ausführungscode enthalten ist, von einer Standard-Bitlänge der Langwortkonstanten subtrahiert; eine Ausführungscode-Erfassungseinheit, die wenigstens einen Konstanten-Operanden, der eine Bitlänge hat, die nicht größer ist als die Differenz-Bitlänge, anhand von Adressen an die Test-Zieladresse angrenzend, erfasst; und eine Anordnungseinheit, die den erfassten Konstanten-Operanden und den Konstanten-Operanden, der in der Test-Zieladresse enthalten ist, anordnet, um die Langwortkonstante wiederherzustellen.
  • Mit dem angegebenen Aufbau kann die Langwortkonstante gerade dann wiederhergestellt werden, wenn die Konstantenteilungsinformationen nicht existieren. Hierbei kann die Testhilfevorrichtung weiterhin eine Ausführungsverlauf-Speichereinrichtung umfassen, die, wenn wenigstens ein Ausführungscode, der in dem Speicher geladen ist, ausgeführt worden ist, Adressen des ausgeführten Ausführungscodes speichert, wobei, wenn kein Ausführungscode ausgeführt worden ist, die Ausführungscode-Erfassungseinheit den Konstanten-Operanden anhand der Adressen, an die Test-Zieladresse angrenzend, erfasst, und wobei, wenn wenigstens ein Ausführungscode ausgeführt worden ist, die Ausführungscode-Erfassungseinheit den Konstanten-Operanden anhand der Adressen, die in der Ausführungsverlauf-Speichereinrichtung gespeichert sind, und anhand der Adressen, an die Test-Zieladresse angrenzend, erfasst.
  • Mit dem angegebenen Aufbau ist es, wenn eine konditionale Verzweigungsinstruktion, die zu irgendeiner von zwei Routen führt, wobei jede eine Teilkonstantenverschie bung umfasst, und eine Speicheroperation in dem Fehlersuchsollprogramm umfasst ist, möglich, zu spezifizieren, welche Teilkonstantenverschiebe- und Speicheroperation ausgeführt worden ist, unter Bezugnahme auf die Ausführungshistorie-Speichereinheit. Dementsprechend kann die Langwortkonstante korrekt wiederhergestellt werden.
  • Hierbei kann die Testhilfevorrichtung weiterhin umfassen: eine Konstantenteilungsinformations-Speichereinheit, die eine Vielzahl von Sätzen von Konstantenteilungsinformationen speichert, wobei jeder Satz von Konstantenteilungsinformationen zeigt: eine einer Vielzahl von Langwortkonstanten, die in eine Quellencodesequenz geschrieben sind, die in die Ausführungscodesequenz kompiliert worden ist; Teilkonstanteninformationen, die eine Vielzahl von Teilkonstanten zeigen, die bestimmt werden, indem die Langwortkonstante geteilt wird; und eine Ladeadresse jedes Ausführungscodes, der eine der Vielzahl von Teilkonstanten enthält, wenn die Ladeadresse bekannt ist; und eine Konstantenteilungsinformations-Erzeugungseinheit, die, wenn die Langwortkonstante durch die Anordnungseinheit wiederhergestellt wird, einen Satz von Konstantenteilungsinformationen erzeugt, indem sie die wiederhergestellte Langwortkonstante als eine ursprüngliche Langwortkonstante schreibt, den erfassten Konstanten-Operanden und den Konstanten-Operanden, der in der Test-Zieladresse enthalten ist, als die Teilkonstanteninformationen schreibt, und die Test-Zieladresse sowie eine Adresse des erfassten Konstanten-Operanden als Ladeadressen schreibt, wobei der erzeugte Satz von Konstantenteilungsinformationen in die Konstantenteilungsinformations-Speichereinheit hinein gespeichert wird.
  • Mit dem angegebenen Aufbau ist es, wenn einmal die Konstantenteilungsinformationen erzeugt sind, nicht länger notwendig, Ausführungscode zu lesen und auf die Ausführungshistorie-Informationen Bezug zu nehmen, um die Langwortkonstante zum nächsten Zeitpunkt wiederherzustellen. Auch kann die Langwortkonstante gerade dann wiederhergestellt werden, wenn die Ausführungshistorie-Informationen von der Ausführungshistorie-Speichereinheit gelöscht sind.
  • Die vierte Aufgabe der vorliegenden Erfindung wird durch eine Programmkompilier vorrichtung gelöst, die umfasst: eine Empfangseinheit, die einen Befehl zum Kompilieren einer Quellencodesequenz von einem Benutzer empfängt; eine Kompilationseinheit, die die Quellencodesequenz zu einer Ausführungscodesequenz kompiliert, wenn der Befehl zum Kompilieren der Quellencodesequenz empfangen wird, wobei von allen Befehlen, die in die Quellencodesequenz geschrieben sind, jeder Befehl, der eine Langwortkonstante enthält, durch eine Operationssequenz in der Ausführungscodesequenz ersetzt wird, wobei die Operationssequenz aus einer Vielzahl von Operationen besteht, die jeweils eine Vielzahl von Teilkonstanten enthalten, die bestimmt werden, indem die Langwortkonstante geteilt wird; eine Feststelleinheit, die feststellt, ob der Befehl zum Kompilieren der Quellencodesequenz von einer Testoptions-Angabe begleitet wird; und eine Erzeugungseinheit, die Konstantenteilungsinformationen, die die Langwortkonstante angeben, unter Verwendung der Vielzahl von Teilkonstanten, erzeugt, wenn die Testoptions-Angabe begleitet wird.
  • Mit dem angegebenen Aufbau liefern die Konstantenteilungsinformationen detaillierte Informationen über die Relation zwischen der originalen Konstanten in dem Quellenprogramm und der Vielzahl von Teilkonstanten in dem vorgesehenen Fehlersuchsollprogramm. Dementsprechend kann das Fehlersuchen effizient unter Verwendung der Konstantenteilungsinformation durchgeführt werden.
  • Hierbei können die Konstantenteilungsinformationen eine Ladeadressen-Spalte enthalten, die eine Ladeadresse jeder der Vielzahl von Operationen zeigen, die jeweils die Vielzahl von Teilkonstanten enthalten, wobei die Kompilationseinheit enthält: eine Ersetzeinrichtung, die jeden Befehl, der die Langwortkonstante enthält, durch die Operationssequenz ersetzt, die aus der Vielzahl von Operationen besteht; eine Optimierungseinheit, die die Quellencodesequenz optimiert, in der jeder Befehl durch die Operationssequenz ersetzt worden ist; und eine Zuordnungseinheit, die eine Ladeadresse in einem Zielrechner jeder der Vielzahl von Operationen in der optimierten Quellencodesequenz zuordnet, und wobei die Erzeugungseinrichtung enthält: eine Schreibeinheit, die, nachdem jeder Befehl durch die Operationssequenz ersetzt ist, eine relative Adresse jeder Operation, die in der Operationssequenz enthalten ist, berechnet und die relative Adresse in die Ladeadressen-Spalte in den Konstantenteilungsinformationen schreibt; und eine Erneuerungseinheit, die die relative Adresse entsprechend einer Änderung der relativen Adresse als ein Ergebnis einer Optimierung durch die Optimierungseinheit erneuert, eine Ladeadresse aus der erneuerten relativen Adresse und der zugeordneten Ladeadresse berechnet und die berechnete Ladeadresse in die Ladeadressen-Spalte in den Konstantenteilungsinformationen schreibt.
  • Mit dem angegebenen Aufbau kann, wenn die Programmkompiliervorrichtung zuerst die Langwortkonstante teilt und dann weitere Modifikationen hinzufügt, um das Fehlersuchsollprogramm zu optimieren, die Fehlersuchhilfsvorrichtung die Langwortkonstante unter Bezugnahme auf die Konstantenteilungsinformationen, die entsprechend dem Optimierungsergebnis erneuert worden sind, wiederherstellen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Diese und andere Aufgaben, Vorteile und Merkmale der Erfindung werden aus der nachfolgenden Beschreibung davon ersichtlich werden, die in Verbindung mit den beigefügten Zeichnungen vorgenommen wird, die eine spezifische Ausführungsform der Erfindung darstellen. In den Zeichnungen:
  • 1 stellt dar, wie Ausführungscode in mnemonische Code bei dem herkömmlichen Fehlersuchen umgewandelt werden;
  • 2A stellt das Erscheinungsbild der Hardwareumgebung der Ausführungsform der vorliegenden Erfindung dar;
  • 2B stellt den inneren Aufbau der Hardwareumgebung der Ausführungsform dar;
  • 3 stellt den Hardwareaufbau des VLIW Prozessors 22 in der Ausführungsform dar;
  • 4A stellt die Instruktionsformate des VLIW Prozessors 22 dar;
  • 4B stellt die Zwischenregisteroperationsformate dar;
  • 4C stellt die 4-Bit-Teilkonstanten-Benutzungsoperationsformate dar;
  • 5 zeigt ein Funktionsblockdiagramm, das den inneren Aufbau der Testhilfevorrichtung 41 darstellt;
  • 6 stellt die Fehlersuchinformationen und die Konstantenteilungsinformationen, umfasst in den Fehlersuchinformationen, dar;
  • 7A stellt die Dialoganzeige, angezeigt auf der Anzeige 11, gemäß der Verarbeitung der Benutzerschnittstelle 44, dar;
  • 7B–7F stellen das Verfahren zum Zurückwandeln von Ausführungscoden durch die Ausführungscoderückwandlungseinheit 47 dar;
  • 8A–8E stellen die Verarbeitung der Konstantenänderungseinheit 50 dar, wenn der Änderungsbefehl ausgeführt wird;
  • 9 zeigt ein Flussdiagramm, das die Verarbeitung der Konstantenwiederherstellungseinheit 49 darstellt;
  • 10A und 10B zeigen ein Flussdiagramm, das die Verarbeitung der Konstantenänderungseinheit 50 darstellt;
  • 11 stellt den inneren Aufbau der Programmkompiliervorrichtung 81 dar;
  • 12A stellt ein Beispiel des Quellenprogramms dar;
  • 12B stellt ein Beispiel des Zwischenbeschreibungsprogramms dar;
  • 12C stellt ein Beispiel des Zwischenbeschreibungsprogramms nach Teilung der Langwortkonstanten dar;
  • 12D stellt ein Beispiel des Zwischenbeschreibungsprogramms nach einer Optimierung dar;
  • 12E stellt absolute Adressen, zugeordnet zu dem Fehlersuchsollprogramm, dar;
  • 13 zeigt ein Flussdiagramm, das die Verarbeitung einer Erzeugung der Konstantenteilungsinformationen darstellt;
  • 14A und 14B stellen Beispiele von Operationen und eine Langwortkonstante, geschrieben mit den Variablen, dargestellt in 13, dar;
  • 15A–15C stellen Beispiele der Konstantenteilungsinformationen nach Teilung der Langwortkonstanten dar;
  • 16A–16C stellen Beispiele der Konstantenteilungsinformationen nach einer Modifikation dar; und
  • 17A–17C stellen Beispiele der Konstantenteilungsinformationen nach einer Absolutadressenzuordnung dar.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Hardwareumgebung für eine Testhilfevorrichtung und eine Programmkompiliervorrichtung
  • Das Nachfolgende ist eine Erläuterung der Debug- bzw. Fehlersuchhilfevorrichtung und der Programmkompiliervorrichtung der Ausführungsform der vorliegenden Erfindung.
  • 2A stellt die Hardwareumgebung, erforderlich für den Betrieb der Testhilfevorrichtung und der Programmkompiliervorrichtung, dar, während 2B ein Blockdiagramm der Hardwareumgebung, dargestellt in 2A, zeigt.
  • In 2A ist ein Host-Computer 10 mit einer Anzeige 11, einem Tastenfeld 12 und einer Mouse 38 verbunden. In 2B umfasst der Host-Computer 10 ein Festplattenlaufwerk 13, einen Host-Prozessor 14, einen Speicher 15 und einen Plattenantrieb 16, eine Simulator-Software 17, einen Parallel-Übertragungs-Port 18 und einen Seriell- Übertragungs-Port 19. Der Parallel-Übertragungs-Port 18 und der Seriell-Übertragungs-Port 19 sind jeweils mit einer ICE-Leiterplatte 30 und einem ROM-Emulator 20 über eine parallele Leitung 31 und eine serielle Leitung 21 verbunden.
  • Der Host-Computer 10 arbeitet als eine Testhilfevorrichtung bzw. eine Fehlersuchhilfsvorrichtung, wenn ein Speichermedium 40, das eine Fehlersuch-Software speichert, in das Plattenlaufwerk 16 eingeladen wird, und die Fehlersuch-Software wird in dem Festplattenlaufwerk 13 installiert und aktiviert.
  • Auch arbeitet der Host-Computer 10 als eine Programmkompiliervorrichtung, wenn ein Speichermedium 80, das eine Programmkompilier-Software speichert, in das Plattenlaufwerk 16 eingeladen wird, und die Programmkompilier-Software in dem Festplattenlaufwerk 13 installiert wird und aktiviert wird.
  • Der ROM-Emulator 20 lässt ein Fehlersuchsollprogramm 24 entsprechend Instruktionen, geschickt von dem Host-Computer 10 aus über die serielle Leitung 21, laufen und hält es an. Der ROM-Emulator 20 liest/schreibt auch Werte von einem/in einen Speicher 26, wenn das Fehlersuchsollprogramm 24 sich in einem angehaltenen Zustand befindet.
  • Wie in 2B dargestellt ist, umfasst der ROM-Emulator 20 einen VLIW-Prozessor 22 und den Speicher 26. Der Speicher 26 besitzt einen Benutzerbereich, der ein Monitorprogramm 23, das Fehlersuchsollprogramm 24 und einen inneren Targetarbeitsbereich 25 umfasst.
  • Der VLIW Prozessor 22 führt jede Instruktion, geschrieben in Instruktionsfolgen, aus, die das Monitorprogramm 23 und das Fehlersuchsollprogramm 24 zusammenstellen, und ist mit einem zugeordneten Anschluss 27 ausgerüstet, der mit der seriellen Leitung 21 verbunden ist.
  • Das Fehlersuchsollprogramm 24 ist aus Instruktionssequenzen zusammengesetzt, die eine Vielzahl von Monitorinstruktionen umfassen. Eine Monitorinstruktion wird dazu verwendet, den VLIW Prozessor 22 zu instruieren, von dem Fehlersuchsollprogramm 24 zu dem Monitorprogramm 23 hin zu verzweigen, wenn Daten in den zugeordneten Anschluss 27 eingegeben sind.
  • Das Monitorprogramm 23 wird dann aktiviert, wenn eine Verzweigung entsprechend der Monitorinstruktion aktiviert wird. Gemäß dem Monitorprogramm 23 wird der VLIW Prozessor 22 in einen Wartezustand für eine Befehleingabe versetzt. Wenn der Befehl in den zugeordneten Anschluss 27 eingegeben ist, dann führt der VLIW Prozessor 22 den Befehl entsprechend dem Monitorprogramm 23 aus.
  • Der innere Targetarbeitsbereich 25 wird für den Betrieb des Monitorprogramms 23 und des Fehlersuchsollprogramms 24 verwendet.
  • Die ICE-Leiterplatte 30 lässt das Fehlersuchsollprogramm 24 in derselben Art und Weise wie der ROM-Emulator 20 entsprechend Instruktionen, geschickt von dem Host-Computer 10 über die parallele Leitung 31, laufen und stoppt es. Die ICE-Leiterplatte liest/schreibt auch Werte von einem/in einen Speicher 33 unter einer erwünschten Zeitabstimmung entsprechend der Steuerung durch den Host-Computers 10.
  • Wie in 2B dargestellt ist, umfasst die ICE-Leiterplatte 30 einen ICE-Chip 32 und den Speicher 33. Der Speicher 33 besitzt einen Supervisor-Bereich, der ein Supervisorprogramm 34 umfasst, und einen Zustandsinformationsbereich 35, und einen Benutzerbereich, umfassend das Fehlersuchsollprogramm 24, und einen inneren Sollarbeitsbereich 37.
  • Der ICE-Chip 32 führt dieselbe Verarbeitung wie der VLIW Prozessor 22 entsprechend Instruktionen, geschickt von dem Host-Computer 10 aus über die parallele Leitung 31, durch.
  • Das Supervisorprogramm umfasst ein Unterbrechungspunkteinstellwerkzeug zum Einstellen von Unterbrechungspunkten, ein Führungswerkzeug zum Speichern einer Adresse jeder Operation, ausgeführt durch den ICE-Chip 32, als Ausführungshistorie-Informationen, und ein Unterbrechungseinstellwerkzeug zum Überwachen, ob ein vorbestimmter Zustand, eingestellt durch den Programmierer, erfüllt ist, und zum Erzeugen eines Unterbrechungssignals, wenn der Zustand erfüllt ist.
  • Der Zustandsinformationsbereich 35 ist ein Speicherbereich, verwendet als ein Arbeitsbereich, für das Supervisorprogramm 34, und speichert Adressen der eingestellten Unterbrechungspunkte, Unterbrechungspunktinformationen, die darstellen, ob eine Operation an jedem Unterbrechungspunkt durchgeführt werden soll, die Ausführungshistorie-Informationen, die Adressen von ausgeführten Operationen in dem Fehlersuchsollprogramm 24 zeigen, und Unterbrechungssignalerzeugung-Zustandsinformationen; die den vorbestimmten Zustand, eingestellt durch den Programmierer, zum Erzeugen des Unterbrechungssignals, zeigen.
  • Der innere Sollarbeitsbereich 37 wird für die Operation des Fehlersuchsollprogramms 24 verwendet.
  • Die Simulator-Software 17 lässt den Host-Prozessor 14 den VLIW Prozessor 22 simulieren. Bei der Simulation speichert der Speicher 15 das Supervisorprogramm 34, den Zustandsinformationsbereich 35, das Fehlersuchsollprogramm 24 und den inneren Sollarbeitsbereich 37, entsprechend wie der Speicher 33 in der ICE-Leiterplatte 30. Die Simulator-Software 17 lässt das Fehlersuchsollprogramm 24 entsprechend den Instruktionen von der Anzeige 11 und dem Tastenfeld 12 laufen und hält es an. Die Simulator-Software 17 liest/schreibt Werte von dem/in den Speicher 15 unter einer erwünschten Zeitabstimmung entsprechend Instruktionen von der Anzeige 11 und dem Tastenfeld 12.
  • In der Testhilfevorrichtung kann entweder die Simulator-Software 17, der ROM-Emulator 20 oder die ICE-Leiterplatte 30 dazu verwendet werden, das Fehlersuchsollprogramm 24 zu testen. Allerdings haben die Simulator-Software 17, der ROM-Emulator 20 und die ICE-Leiterplatte 30 jeweils die folgenden Vorteile und Nachteile. Dementsprechend muss der Programmierer den geeignetesten einen entsprechend einem Typ einer Fehlersuche, unter Berücksichtigung dieser Vorteile und Nachteile, auswählen.
  • Da der ROM-Emulator 20 grundsätzlich dazu vorgesehen ist, das Fehlersuchsollprogramm 24 zu überwachen, ist er zum Durchführen einer relativ einfachen Prüfung und Fehlersuche eines Versuchs-Modells einer vorgesehenen Maschine geeignet. Andererseits ist der ROM-Emulator 20 nicht für komplexes Fehlersuchen geeignet, da der Speicher 26 nicht das Unterbrechungspunkteinstellwerkzeug, das Spurführungswerkzeug und das Unterbrechungseinstellwerkzeug speichert.
  • Da die ICE-Leiterplatte 30 das Unterbrechungspunkteinstellwerkzeug, das Spurführungswerkzeug und das Unterbrechungseinstellwerkzeug in dem Supervisorprogramm 34 besitzt, ist es zum Durchführen einer komplexen Fehlersuche unter Verwendung dieser Werkzeuge geeignet. Andererseits kann, wenn die ICE-Leiterplatte 30 einen Schaltkreisaufbau unterschiedlich zu der vorgesehenen Maschine besitzt, deren Fehlersuche nicht dahingehend angesehen werden, dass sie vollständig ist, gerade wenn das Fehlersuch sollprogramm normal zu arbeiten scheint, und zwar als Folge der Fehlersuche durch die ICE-Leiterplatte 30. Auch ist die Verdrahtung auf der ICE-Leiterplatte 30 manchmal länger als bei der vorgesehenen Maschine selbst, was dazu führt, eine Zeitverzögerung zwischen Schaltungselementen zu verursachen.
  • Die Simulator-Software 17 besitzt das Unterbrechungspunkteinstellwerkzeug, das Spurführungswerkzeug und das Unterbrechungseinstellwerkzeug in dem Speicher 15, wie dies bei der ICE-Leiterplatte 30 der Fall ist. Demzufolge ist sie in der Lage, die komplexe Fehlersuche unter Verwendung dieser Werkzeuge durchzuführen. Andererseits ist, da die Simulator-Software 17 in dem Host-Computer 10 arbeitet, die Betriebsweise des Fehlersuchsollprogramms 24 in dem Host-Computer 10 viel langsamer als diejenige des ROM-Emulators 20 und der ICE-Leiterplatte 30. Zum Beispiel nimmt dieselbe Verarbeitung mehrere Minuten oder mehr in dem Host-Computer 10 in Anspruch, während sie nur eine Sekunde in dem ROM-Emulator 20 oder der ICE-Leiterplatte 30 in Anspruch nimmt.
  • Instruktionsformat
  • Das Nachfolgende ist eine Erläuterung von Instruktionen, die das Fehlersuchsollprogramm 24 zusammensetzen.
  • Die Instruktionen, die das Fehlersuchsollprogramm 24 zusammensetzen, besitzen jeweils 32 Bits und können drei Operationen maximal umfassen, die durch den VLIW Prozessor 22 parallel verarbeitet werden können. In dieser Beschreibung bezieht sich der Ausdruck „Instruktion" auf einen Satz von Coden, die durch den VLIW Prozessor 22 simultan und parallel ausgeführt werden, während sich der Ausdruck „Operation" auf eine Einheit einer Verarbeitung bezieht, wie beispielsweise eine arithmetische Operation, eine logische Operation, oder eine Übertragung, die durch den VLIW Prozessor 22 parallel ausgeführt wird, ebenso wie auf einen Code, der jede Einheit einer Verarbeitung anzeigt.
  • Um die bestmögliche Verwendung der Parallelverarbeitungsfähigkeit des VLIW Prozessors 22 vorzunehmen, werden eine Konstantenteilungsverarbeitung und eine Ablaufplanungsverarbeitung an dem Fehlersuchsollprogramm 24 während einer Kompilierung durchgeführt. Als Folge werden die folgenden Änderungen von dem Zwischenbeschreibungsprogramm in dem Fehlersuchsollprogramm 24 gesehen.
  • Die erste Änderung ist diejenige, dass jede Instruktion, die eine Langwortkonstante von 32 Bits oder 24 Bits Unterinstruktionen in dem Zwischenbeschreibungsprogramm umfasst, in mindestens eine Teilkonstantenverschiebung und Speicheroperation und eine Benutzungsoperation für eie gespeicherte Konstante umgewandelt wird.
  • Die Teilkonstantenverschiebungs- und Speicheroperation besitzt eine Teilkonstante als einen Operanden, von k Teilkonstanten, erzeugt durch Teilung einer Langwortkonstante, umfasst in einer Instruktion in dem Zwischenbeschreibungsprogramm. Wenn die Langwortkonstante in die k Teilkonstanten unterteilt ist, werden (k-1) Teilkonstantenverschiebungs- und Speicheroperationen in das Fehlersuchsollprogramm 24 geschrieben.
  • Die Benutzungsoperation für die gespeicherte Konstante besitzt eine Teilkonstante niedrigster Ordnung, unter den k Teilkonstanten, als einen Operanden, und spezifiziert eine Operation, wie beispielsweise eine arithmetische Operation, eine logische Operation, oder eine Übertragung, um durch den VLIW Prozessor 22 ausgeführt zu werden.
  • Das Nachfolgende ist eine Erläuterung darüber, wie Teilkonstanten gemäß der Teilkonstantenverschiebungs- und Speicheroperationen gespeichert werden, und wie die gespeicherten Teilkonstanten entsprechend der Benutzungsoperation für die gespeicherte Konstante verwendet werden.
  • Der VLIW Prozessor 22 decodiert die erste Teilkonstantenverschiebe- und Speicheroperation und speichert eine Teilkonstante, umfasst in der ersten Teilkonstantenverschiebe- und Speicheroperation, in ein Konstantenregister 76, das ein zugeordnetes Register ist, umfasst in dem VLIW Prozessor 22.
  • Als nächstes decodiert der VLIW Prozessor 22 die zweite Teilkonstanten- und Speicheroperation, lässt das Konstantenregister 76 die gespeicherte Teilkonstante zu einer höheren Position verschieben, und speichert eine Teilkonstante, umfasst in der zweiten Teilkonstantenverschiebe- und Speicheroperation, in die niedrigste Position in dem Konstantenregister 76 hinein.
  • Die vorstehende Verarbeitung wird für die anderen Teilkonstantenverschiebe- und Speicheroperationen wiederholt. Beim Decodieren aller der Vielzahl von Teilkonstantenverschiebe- und Speicheroperationen decodiert der VLIW Prozessor 22 die gespeicherte Konstantenbenutzungsoperation und lässt das Konstantenregister 76 alle Teilkonstanten, gespeichert in der vorstehenden Verarbeitung, zu der höheren Position verschieben. Der VLIW Prozessor 22 speichert dann eine Teilkonstante, umfasst in der gespeicherten Konstantenbenutzungsoperation, in die niedrigste Position in dem Konstantenregister 76, und führt eine Operation, spezifiziert durch die Benutzungsoperation für die gespeicherte Konstante, durch, wie beispielsweise eine arithmetische Operation, eine logische Operation oder eine Übertragung, unter Verwendung aller Teilkonstanten, gespeichert in dem Konstantenregister 76.
  • Die zweite Änderung ist diejenige, dass die Instruktionsausführungsreihenfolge in dem Fehlersuchsollprogramm 24 zu derjenigen des Zwischenbeschreibungsprogramms, eingestellt durch den Programmierer, unterschiedlich ist, da die Ablaufplanung durchgeführt worden ist, als eine Zusammenstellung des Zwischenbeschreibungsprogramms erfolgte. Hierbei umfasst jede Instruktion, die das Fehlersuchsollprogramm 24 zusammensetzt, eine 32-Bit Langwortinstruktion, die drei Operationen maximal umfasst. Demzufolge wird jede Instruktion, geschrieben in dem Zwischenbeschreibungsprogramm, in Operationen zum Zeitpunkt der Kompilierung umgewandelt, und die erzeugten Operationen in Einheiten von drei Maximalwerten in eine Langwortinstruktion in dem Fehlersuchsollprogramm 24 hinein zusammengestellt.
  • In der Ablaufplanung wird die Operationsausführungsreihenfolge so geändert, um effizient Operationssequenzen zu einer Mehrzahl von Ausführungseinheiten in dem VLIW Prozessor 22 zuzuführen, und Operationen, die in einem Zyklus ausgeführt werden können, werden in dieselbe Instruktion hineingepackt.
  • Als Folge der Konstantenunterteilungsverarbeitung und der Ablaufplanungsverar beitung, beschrieben vorstehend, wird jede Instruktion, die eine Langwortkonstante in dem Quellenprogramm besitzt, in eine Vielzahl von Operationen unterteilt, von denen jede eine Teilkonstante besitzt, die dann in 32-Bit-Instruktionen ohne Belassen eines Zwischenraums hineingepackt werden. Indem dies so vorgenommen wird, wird die Größe des Fehlersuchsollprogramms 24 verringert.
  • Instruktionsformate des Fehlersuchsollprogramms 24 sind so definiert, dass jede Instruktion einer Mehrzahl von Operationen entsprechend zu der Teilkonstantenverschiebung und von Speicheroperationen und/oder den Benutzungsoperationen für gespeicherte Konstanten umfasst. Die Instruktionsformate sind in 4A dargestellt.
  • In der Figur ist jede 32-Bit-Instruktion in acht 4-Bit-Felder unterteilt, die von den höchsten sind, ausgedrückt als p0.0, p1.0, p2.0, p2.1, p2.2, p3.0, p3.1 und p3.2.
  • Wenn p0.0 und p1.0, die den höchsten 8 Bits einer 32-Bit-Instruktion entsprechen, beide bei „0x0" eingestellt sind, wird eine Teilkonstantenverschiebungs- und Speicheroperation mit einem 32-Bit-Teilkonstantenoperanden (der Operationscode ist „SFST12" in einem mnemonischen Code) in p2.0-p2.2 (erstes Operationsfeld) eingestellt, und eine Zwischenregisteroperation wird in p-3.0-p3.2 (zweites Operationsfeld) eingestellt.
  • Wenn p0.0 und p1.0 jeweils bei „0x0" und „0x1" eingestellt sind, wird eine Teilkonstantenverschiebungs- und Speicheroperation mit einem 12-Bit-Teilkonstantenoperanden in dem ersten Operationsfeld eingestellt, und eine Operation, die einen 4-Bit-Teilkonstantenoperanden verwendet, wird in dem zweiten Operationsfeld eingestellt.
  • Wenn p0.0 und p1.0 jeweils bei „0x0" und „0x2" eingestellt sind, wird eine Zwischenregisteroperation in dem ersten Operationsfeld eingestellt und eine Teilkonstantenverschiebungs- und Speicheroperation mit einem 12-Bit-Teilkonstantenoperanden wird in dem zweiten Operationsfeld eingestellt.
  • Wenn p0.0 und p1.0 jeweils bei „0x0" und „0x3" eingestellt sind, wird eine Operation, die einen 4-Bit-Teilkonstantenoperanden verwendet, in dem ersten Operationsfeld eingestellt, und eine Teilkonstantenverschiebungs- und Speicheroperation mit einem 12-Bit-Teilkonstantenoperanden wird in dem zweiten Operationsfeld eingestellt.
  • Wenn p0.0 und p1.0 jeweils bei „0x0" und „0x8" eingestellt sind, wird eine Teilkonstantenverschiebungs- und Speicheroperation mit einem 12-Bit-Teilkonstantenoperanden in dem ersten Operationsfeld eingestellt, und eine Teilkonstantenverschiebungs- und Speicheroperation mit einem 12-Bit-Teilkonstantenoperanden wird in dem zweiten Operationsfeld eingestellt (der Operationscode ist „SFST24" in einem mnemonischen Code).
  • Das erste Operationsfeld und das zweite Operationsfeld können jeweils einen Teilkonstantenoperanden von entweder 4 oder 12 Bits haben. Dementsprechend können das erste und das zweite Operationsfeld Teilkonstanten von 24 Bits (12 + 12) oder 16 Bits (4 + 12 oder 12 + 4) umfassen. Auch kann das erste Operationsfeld das p1.0 Feld Teilkonstanten von 8 Bits umfassen. Das bedeutet, dass eine Instruktion Teilkonstanten hat, die 4 Bits, 8 Bits (4 + 4), 12 Bits, 16 Bits (4 + 12) oder 24 Bits (12 + 12) lang sind. Demzufolge werden Operationen kombiniert, um eine Konstante von sich ändernder Länge zu bilden.
  • Wenn eine Kombination 32 Bits übersteigt, wie beispielsweise die Kombination von drei 12-Bit Teilkonstanten (36 Bits), werden darüber hinausgehende Bits höherer Ordnung ignoriert. Andererseits wird, wenn die Kombination nicht 32 Bits erreicht, eine Vorzeichenerweiterung oder eine Null-Erweiterung in Bezug auf die Kombination entsprechend jedem Operationstyp durchgeführt.
  • 4B stellt Instruktionsformate des ersten Operationsfelds oder des zweiten Operationsfelds dar, wenn eine Zwischenregisteroperation in dem ersten oder dem zweiten Operationsfeld eingestellt wird.
  • Wenn p2.0 (p3.0) bei „0x0" eingestellt wird, werden Registernummern (n) und (m) eines allgemeinen Registers 75 in dem VLIW Prozessor 22 jeweils in p2.1 (p3.1) und p2.2 (p3.2) eingestellt. Hierbei dient die Operation, ausgedrückt durch den mnemonischen Code „ADD Rn, Rm", dazu, den VLIW Prozessor 22 zu instruieren, Werte von Registern Rn und Rm hinzuzufügen und das Ergebnis zu dem Register Rm zu übertragen.
  • Wenn p2.0 (p3.0) bei „0x1" eingestellt ist, werden Registerzahlen (n) und (m) jeweils in p2.1 (p3.1) und p2.2 (p3.2) eingestellt. Hierbei dient die Operation, ausgedrückt durch den mnemonischen Code „ADDX Rn, Rm", dazu, den VLIW Prozessor 22 zu instruieren, Werte der Register Rn und Rm hinzuzufügen und das Additionsergebnis zu dem Register Rx zu übertragen.
  • Wenn p2.0 (p3.0) bei „0x5" eingestellt ist, wird keine Operation spezifiziert (mnemonischer Code „NOP").
  • 4C stellt die Instruktionsformate des ersten (zweiten) Operationsfelds dar, wenn eine 4-Bit-Teilkonstantenbenutzungsoperation in dem ersten (zweiten) Operationsfeld eingestellt ist.
  • Wenn p2.0 (p3.0) bei „0x0" eingestellt ist, wird eine 4-Bit-Teilkonstante in p2.1 (p3.1) eingestellt, und eine Registerzahl (m) wird in p2.2 (p3.2) eingestellt. Hierbei wird die Operation durch den mnemonischen Code „ADD imm4, Rm" ausgedrückt.
  • Wenn p2.0 (p3.0) bei „0x1" eingestellt ist, wird eine 4-Bit-Teilkonstante in p2.1 (p3.1) eingestellt, und eine Registerzahl (m) wird in p2.2 (p3.2) eingestellt. Hierbei wird die Operation durch den mnemonischen Code „ADDX imm4, Rm" ausgedrückt.
  • Wenn p2.0 (p3.0) bei „0x2" eingestellt ist, wird eine 4-Bit-Teilkonstante in p2.1 (p3.1) eingestellt, und eine Registerzahl (m) wird in p2.2 (p3.2) eingestellt. Hierbei wird die Operation durch den mnemonischen Code „MOV imm4, Rm" ausgedrückt.
  • Wenn p2.0 (p3.0) bei „0x3" eingestellt ist, wird eine 4-Bit-Teilkonstante in p2.1 (p3.1) eingestellt, und eine Registerzahl (m) wird in p2.2 (p3.2) eingestellt. Hierbei wird die Operation durch den mnemonischen Code „CMP imm4, Rm" ausgedrückt.
  • Wenn p2.0 (p3.0) bei „0x4" eingestellt ist, wird eine 4-Bit-Teilkonstante in p2.1 (p3.1) eingestellt, und eine Registerzahl (m) wird in p2.2 (p3.2) eingestellt. Hierbei wird die Operation durch den mnemonischen Code „SUB imm4, Rm" ausgedrückt.
  • Wenn p2.0 (p3.0) bei „0x5" eingestellt ist, wird eine 4-Bit-Teilkonstante in p2.1 (p3.1) eingestellt, und eine Registerzahl (m) wird in p2.2 (p3.2) eingestellt. Hierbei wird die Operation durch den mnemonischen Code „MOVU imm4, Rm" ausgedrückt.
  • Wenn p2.0 (p3.0) bei „0x7" eingestellt ist, wird eine 4-Bit-Teilkonstante in p2.1 (p3.1) eingestellt, und eine Registerzahl (m) wird in p2.2 (p3.2) eingestellt. Hierbei wird die Operation durch den mnemonischen Code „ST Rm, (imm4)" ausgedrückt.
  • Wenn p2.0 (p3.0) bei „0xA" eingestellt ist, wird eine 4-Bit-Teilkonstante in p2.1 (p3.1) eingestellt, und eine Registerzahl (m) wird in p2.2 (p3.2) eingestellt. Hierbei wird die Operation durch den mnemonischen Code „LD (imm4), Rm" ausgedrückt.
  • Unter den vorstehenden Operationen stellen die 12-Bit-Teilkonstantenverschiebungs- und Speicheroperation (SFST12) und die 24-Bit-Teilkonstantenverschiebungs- und Speicheroperation (SFST24) die Teilkonstantenverschiebungs- und Speicheroperation dar, während die 4-Bit-Teilkonstantenbenutzungsoperation (dargestellt in 4C) und die 8-Bit-Teilkonstantenbenutzungsoperation die gespeicherte Konstantenbenutzungsoperation darstellen.
  • Innerer Aufbau eines VLIW Prozessors 22
  • Das Nachfolgende ist eine Erläuterung des inneren Aufbaus des VLIW Prozessors 22, der maximal drei Operationen parallel ausführen kann, und zwar unter Bezugnahme auf 3. In der Figur kann der Aufbau des VLIW Prozessors 22 grob in ein Instruktionsregister 60, eine Decodierereinheit 61 und eine Ausführungseinheit 67 unterteilt werden.
  • Das Instruktionsregister 60 ist ein 32-Bit-Register, das eine Instruktion speichert, die von einer Instruktionsabrufeinheit 73 aus geschickt worden ist.
  • Die Decodierereinheit decodiert die Instruktionen, gehalten in dem Instruktionsregister 60, und gibt Steuersignale zu der Ausführungseinheit 67 entsprechend dem Decodierergebnis aus. Diese Decodierereinheit 61 kann selbst grob in einen Formatdecodierer 62 und einen Instruktionsdecodierer 63 unterteilt werden.
  • Der Instruktionsdecodierer 63 ist aus einem Verzweigungsdecodierer 64, der einen Operationscode decodiert, gehalten in dem p1.0 Feld, und einer PC-Einheit 69 entsprechend steuert, einen ersten Operationsdecodierer 65, der einen Operationscode, gehalten in dem p2.0 Feld decodiert und eine erste Operationseinheit 71 entsprechend steuert, und einen zweiten Operationsdecodierer 66, der einen Operationscode, gehalten in dem p3.0 Feld, decodiert und eine zweite Operationseinheit 72 steuert, und eine Operandenzugriffseinheit 74 entsprechend, aufgebaut.
  • Der Formatdecodierer 62 decodiert einen 4-Bit-Formatcode, gehalten in dem p0.0 Feld, um das Instruktionsformat der Instruktion, gehalten in dem Instruktionsregister 60, als eines der Mehrzahl der Instruktionsformate, dargestellt in 4A, zu identifizieren. Entsprechend dem Decodierergebnis lässt der Formatdecodierer 62 Decodieroperationen durch den Verzweigungsdecodierer 64, den ersten Operationsdecodierer 65 und den zweiten Operationsdecodierer 66 zu oder sperrt sie, und aktiviert eine Konstantenregistersteuereinheit der Ausführungseinheit 67.
  • Der Verzweigungsdecodierer 64, der erste Operationsdecodierer 65 und der zweite Operationsdecodierer 66 decodieren grundsätzlich eine Operation in einem Zyklus und schicken Steuersignale zu der Ausführungseinheit 67.
  • Die Ausführungseinheit 67 arbeitet entsprechend dem Decodierergebnis der Decodierereinheit 61, und ist eine Schaltung, die in der Lage ist, maximal drei Operationen parallel auszuführen. Diese Ausführungseinheit 67 ist aus einer Ausführungssteuereinheit 68, der PC Einheit 69, einem Registersatz 70, der ersten Operationseinheit 71, der zweiten Operationseinheit 72, der Instruktionsabrufeinheit 73 und der Operandenzugriffseinheit 64 aufgebaut.
  • Die Ausführungssteuereinheit 68 ist eine Steuerschaltung zum Steuern der Komponenten, umfasst in der Ausführungseinheit 67, entsprechend dem Decodierergebnis der Decodierereinheit 61. Diese Ausführungssteuereinheit 68 umfasst eine Konstantenregistersteuereinheit, die eine Steuerung so durchführt, dass eine Konstante, gehalten in dem Instruktionsregister 60, in dem Konstantenregister 76 gespeichert wird, und zwar basierend auf Instruktionen, die durch den Formatdecodierer 62 gegeben sind.
  • Die PC (Program Counter – Programmzähler) Einheit 69 arbeitet unter der Steuerung des Verzweigungsdecodierers 64, und gibt eine Adresse in dem Speicher 26 der nächsten Instruktion aus, um decodiert und ausgeführt zu werden, und zwar zu der Instruktionsabrufeinheit 73 hin.
  • Die Instruktionsabrufeinheit 73 ruft einen Instruktionsblock, umfasst in dem Monitorprogramm 23 oder dem Fehlersuchsollprogramm 24, von dem Speicher 26 über einen 32-Bit-IA-(Instruction Adress)-Bus und einen 32-Bit-ID-(Instruction Data)-Bus ab. Die Instruktionsabrufeinheit 73 speichert den abgerufenen Instruktionsblock in einem internen Instruktionschachespeicher und führt die Instruktion, die der Adresse entspricht, ausgegeben durch die PC Einheit 69, zu dem Instruktionsregister 60 zu.
  • Der Registersatz 70 ist aus sechzehn 32-Bit-Allgemeinregistern 75 und einem 32-Bit-Konstantenregister 76 aufgebaut. Entsprechend den Decodierergebnissen des ersten Operationsdecodierers 65 und des zweiten Operationsdecodierers 66 werden Werte, die in diesenen Registern 75 und 76 gespeichert sind, zu der ersten Operationseinheit 71 und der zweiten Operationseinheit 72 übertragen. Hierbei werden die Operationen durchgeführt, oder alternativ wird zugelassen, dass die Werte hindurchführen, bevor sie zu dem Registersatz 70 oder der Operandenzugriffseinheit 74 geschickt werden. Werte, gespeichert in dem Konstantenregister 76, werden in den Operationen, durchgeführt durch die erste Operationseinheit 71 und die zweite Operationseinheit 72, verwendet, während die Werte auch zu der PC Einheit 79 übertragen werden, wo sie dazu verwendet werden, eine effektive Adresse für eine Verzweigungsbestimmung zu erzeugen.
  • Die erste Operationseinheit umfasst intern eine ALU (Arithmetic Logic Unit – Arithmetik-Logik-Einheit) zum Durchführen arithmetischer, logischer Operationen an zwei 32-Bit-Sätzen von Daten und einem Multiplizierer zum Durchführen von Multiplikationen in Bezug auf zwei 32-Bit-Sätzen von Daten. Diese erste Operationseinheit 71 ist in der Lage, zwei Typen einer Operation (nämlich eine arithmetische, logische Operation und eine Zwischenregisterübertragungsoperation) unter der Steuerung des ersten Operationsdecodierers 65 auszuführen.
  • Die zweite Operationseinheit 72 umfasst intern eine ALU zum Durchführen arithmetischer, logischer Operationen in Bezug auf zwei 32-Bit-Sätze an Daten und einen Multiplizierer zum Durchführen von Multiplikationen in Bezug auf zwei 32-Bit-Sätze von Daten, und zwar in derselben Art und Weise wie die erste Operationseinheit 71. Diese zweite Operationseinheit 72 ist in der Lage, zwei Typen einer Operation (nämlich eine arithmetische, logische Operation und eine Zwischenregisterübertragungsoperation) unter der Steuerung des zweiten Operationsdecodierers 66 auszuführen.
  • Die Operandenzugriffseinheit 74 arbeitet unter der Steuerung des zweiten Operationsdecodierers 66 und ist eine Schaltung, die Operanden zwischen dem Registersatz 70 und dem inneren Sollarbeitsbereich 25 in dem Speicher 26 überträgt. Die Operandenzugriffseinheit 74 umfasst intern einen Puffer zum Speichern von Operanden und Operanden-Adressen. Als ein spezifisches Beispiel wird, wenn der Operationscode „1d" in dem p3.1 Feld des Instruktionsregisters 60 vorhanden ist, ein Wort von Daten, das in dem inneren Sollarbeitsbereich 25 angeordnet ist, über die Operandenzugriffseinheit 74 in eines der Register in dem Registersatz 70 hinein eingeladen. Wenn der Operationscode „st" vor handen ist wird, zwischenzeitlich, der gespeicherte Wert eines der Register in dem Registersatz 70 in dem inneren Sollarbeitsbereich 25 hinein gespeichert.
  • Es ist anzumerken, dass der ICE-Chip 32, der den VLIW Prozessor 22 und den Host Prozessor 14 emuliert, was den VLIW Prozessor 22 durch Ausführen der Simulator-Software 17 simuliert, unterschiedliche Konstruktionen gegenüber derjenigen haben, die in 3 dargestellt ist. Allerdings umfassen diese Konstruktionen nicht irgendeine neue Offenbarung und demzufolge werden sie hier nicht in dieser Beschreibung erläutert.
  • Operation einer Fehlersuchhilfsvorrichtung
  • Das Nachfolgende ist eine Erläuterung, wie die Debug- bzw. Fehlersuchhilfsvorrichtung die Simulator-Software 17, den ROM-Emulator 20 und die ICE-Leiterplatte 30 verwendet, um das Debug- bzw. Fehlersuchsollprogramm 24 zu testen.
  • Gemäß der Eingabe, vorgenommen durch den Programmierer über das Tastenfeld 12, lässt die Fehlersuchhilfsvorrichtung entweder die Simulator-Software 17, den ROM-Emulator 20 oder die ICE-Leiterplatte 30 das Fehlersuchsollprogramm 24, an einer Startadresse, spezifiziert durch den Programmierer, laufen, und stoppt das Fehlersuchsollprogramm 24 an einer Stoppadresse, spezifiziert durch den Programmierer. Die Fehlersuchhilfsvorrichtung lässt auch entweder die Simulator-Software 17, den ROM-Emulator 20 oder die ICE-Leiterplatte 30 Werte von dem/in den Speicher lesen/schreiben, wenn sich das Fehlersuchsollprogramm 24 in dem angehaltenen Zustand befindet.
  • In der vorstehenden Verarbeitung lässt die Testhilfsvorrichtung bzw. die Fehlersuchhilfsvorrichtung die Anzeige 11 Informationen über das Fehlersuchsollprogramm 24 anzeigen und speichert Werte des Speichers, geschrieben als mnemonischer Code, zusammen mit Informationen über Quellencode des Fehlersuchsollprogramms 24, um dem Programmierer zu helfen, die Fehlersuchverarbeitung zu verstehen.
  • Diese Fehlersuchhilfsvorrichtung wird durch Installieren der Fehlersucheinrichtungs-Software in dem Host-Computer 10 realisiert. Hierbei wird die Fehlersucheinrichtungs-Software in einem Speichermedium gespeichert, wie beispielsweise dem Speichermedium 40, dargestellt in 2B, und die im Markt als eine Package-Software vertrieben wird.
  • Im Hinblick auf die vorstehende Charakteristik der Testhilfsvorrichtung ist es geeigneter, auf die Fehlersucheinrichtungs-Software, gespeichert in dem Speichermedium, Bezug zu nehmen, im Gegensatz dazu, auf die Hardware-Versorgung (wie beispielsweise der Prozessor und der Speicher) Bezug zu nehmen, umfasst in dem Host Computer, als die Funktions-Entität der Testhilfevorrichtung. Ähnlich sollte, da eine Software (wie beispielsweise die Fehlersucheinrichtungs-Software), die für eine komplexe Verarbeitung entwickelt worden ist, gewöhnlich aus einer Mehrzahl von Unterprogrammen und Arbeitsbereichen zusammengesetzt, wobei jedes Unterprogramm und jeder Arbeitsbereich, umfasst in der Fehlersucheinrichtungs-Software, als die Komponenten der Testhilfevorrichtung angesehen werden sollten. Demzufolge werden die Unterprogramme und die Arbeitsbereiche, die die Funktionen der Testhilfevorrichtung und der Programmkompiliervorrichtung zusammensetzen, als die Komponenten jeder Vorrichtung der vorliegenden Ausführungsform angesehen.
  • 5 stellt den funktionalen Aufbau der Testhilfevorrichtung 41 aus der vorstehenden Sichtweise dar. In der Figur umfasst die Testhilfs- bzw. Fehlersuchhilfsvorrichtung 41 eine Fehlersuchinformationsspeichereinheit 42, eine Benutzerschnittstelle 44, eine Grafikbenutzerschnittstelle 45, einen Befehlinterpretierer 46, eine Ausführungscoderückumwandlungseinheit 47, eine Ausführungscodeumwandlungseinheit 48, eine Konstantenwiederherstellungseinheit 49, eine Konstantenänderungseinheit 50 und eine Sollschnittstelle 51. Hierbei stellen die Benutzerschnittstelle 44, die Grafikbenutzerschnittstelle 45 und der Befehlinterpretierer 46 die Eingabeanalyseeinheit 43 zusammen.
  • Die Sollschnittstelle 51 speichert intern entweder die Simulator-Software 17, den ROM-Emulator 20 oder die ICE-Karte 30 zum Ausführen des Fehlersuchsollprogramms 24 (in der vorliegenden Ausführungsform entweder die Simulator-Software 17, den ROM-Emulator 20 oder die ICE-Karte 30, die das Fehlersuchsollprogramm 24 ausführt, wird als „Arbeitsumgebung" bezeichnet). Wenn die anderen Komponenten der Testhilfevorrichtung 41 Befehle erzeugen, wie beispielsweise einen Lauf-Befehl, einen Stopp-Befehl, einen Lese-Befehl und einen Schreib-Befehl, schickt die Sollschnittstelle 51 diese Befehle zu der Arbeitsumgebung.
  • Die Fehlersuchinformationsspeichereinheit 42 speichert Fehlersuchinformationen, die zusammen mit dem Fehlersuchsollprogramm 24 erzeugt sind. 6 stellt ein beispielhaftes, logisches Format der Fehlersuchinformationen dar.
  • In der Figur sind die Fehlersuchinformationen aus Dateiidentifikationsinformationen 801, Ausführungscodeinformationen 802, Identifiziererinformationen 803, Quellendateiinformationen 804, Zeilenzahlinformationen 805, Typinformationen 806 und Konstantenteilungsinformationen 807 aufgebaut.
  • Die Dateiidentifikationsinformationen 801 zeigen einen Prozessor-Typ, der zum Ausführen des Fehlersuchsollprogramms 24 geeignet ist, und eine Version einer Programmkompilier-Software einer Programmkompiliervorrichtung, die das Quellenprogramm zu dem Fehlersuchsollprogramm 24 hin zusammenstellt.
  • Die Ausführungscodeinformationen 802 stellen eine Korrespondenztabelle zwischen mnemonischen Coden und Ausführungscoden dar.
  • Die Identifiziererinformationen 803 stellen eine Korrespondenztabelle zwischen Identifizierern und deren Werten dar. Ein Beispiel der Identifiziererinformationen 803 ist oben rechts in der Figur dargestellt. In dem Beispiel entspricht ein Identifizierer _a einem 32-Bit-Wert „0x00001000", während ein Identifizierer _b einem 32-Bit-Wert „0x00001004" entspricht.
  • Die Quellendateiinformationen 804 stellen einen Namen des Quellenprogramms und seine Sprache ebenso wie Adressen von Ausführungscoden, erzeugt durch Zusammenstellen des Quellenprogramms, dar.
  • Die Zeilenzahlinformationen 805 stellen eine Korrespondenztabelle zwischen Zeilenzahlen von Angaben, geschrieben in dem Quellenprogramm, und Adressen von Ausführungscoden, erzeugt durch Zusammenstellen der Angaben, dar.
  • Die Typinformationen 806 stellen Identifizierertypen dar.
  • Die Konstantenteilungsinformationen 807 werden zum Identifizieren einer originalen Langwortkonstanten, geschrieben in dem Quellenprogramm, von Teilkonstanten, die als Operanden in der Teilkonstantenverschiebungs- und Speicheroperation und der Benutzeroperation der gespeicherten Konstanten in dem Fehlersuchsollprogramm 24 verwendert werden, gespeichert.
  • Beispiele der Konstantenteilungsinformationen 807 sind in der Mitte und unten rechts in 6 dargestellt.
  • In jedem Beispiel sind die Konstantenteilungsinformationen aus Konstantentypinformationen 601, die darstellen, ob die Langwortkonstante als eine Zahl oder ein Identifizierer ausgedrückt ist, Konstantenwertinformationen 602, die den Konstantenwert in einer hexadezimalen Angabe darstellen, Unterkonstantenteilinformationen 603, die den Wert k darstellen, wo die Konstante in k Teilkonstanten unterteilt worden ist, Konstantenteilungsbitpositionsinformationen 604, die alle Bitpositionen darstellen, an denen die Konstante geteilt worden ist, Teilkonstantenbitlängeninformationen 605, die eine Bitlänge jeder Teil konstanten darstellen, und Teilkonstantenverwendungsoperations-Adresseninformationen 606, die eine Adresse jeder Operation darstellen, die eine der Teilkonstanten verwendet, aufgebaut. Jede Operationsadresse, dargestellt in den Teilkonstantenbenutzungsoperations-Adresseninformation 606 wird durch eine Kombination einer Adresse einer Instruktion, die die Operation umfasst, und einer seriellen Nummer zum Spezifizieren der Operation in der Instruktion, wenn die Instruktion eine Vielzahl von Operationen umfasst, ausgedrückt.
  • Die Fehlersuchinformationen in 6 umfassen vier Sätze an Konstantenteilungsinformationen jeweils, die sich auf Konstanten „0x12345678", „0x00001000", „0x00001004" und „0x87654321" beziehen. Die Beispiele der Konstantenteilungsinformationen 807, dargestellt in der Figur, beziehen sich auf die Konstanten „0x12345678" und „0x00001000".
  • In den Konstantenteilungsinformationen 807 für die Konstante „0x12345678" stellen die Konstantentypinformationen 601 dar, dass die Konstante als eine Zahl ausgedrückt wird, die Konstantenwertinformationen 602 stellen dar, dass der Konstantenwert „0x12345678" ist, und die Teilkonstantenzahlinformationen 603 stellen dar, dass k der Wert 2 ist, wenn die Konstante in k Teilkonstanten unterteilt worden ist. Die Konstantenteilungsbitpositionsinformationen 604 stellen dar, dass die Konstante an dem 8. Bit und dem 0. Bit von der untersten Bitposition unterteilt worden ist, und die Teilkonstantenbitlängeninformationen 605 stellen dar, dass die erste und die zweite Teilkonstante, erhalten durch Teilung der Konstanten, jeweils 24 Bits und 8 Bits haben. Die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 zeigen, dass die erste Teilkonstante in der 0. Operation in der Instruktionsadresse 0x80000000 umfasst ist und die zweite Teilkonstante in der 0. Operation in der Instruktionsadresse 0x80000004 umfasst ist.
  • In den Konstantenteilungsinformationen 807 für die Konstante „0x00001000" stellen die Konstantentypinformationen 601 dar, dass die Konstante als ein Identifizierer ausgedrückt ist, die Konstantenwertinformationen 602 stellen dar, dass der Konstantenwert „0x00001000" ist, und die Teilkonstantenzahlinformationen 603 stellen dar, dass k den Wert 2 hat, wenn die Konstante in k Teilkonstanten unterteilt worden ist. Die Konstanten und Teilungsbitpositionsinformationen 604 stellen dar, dass die Konstante an dem 8. Bit und dem 0. Bit von der untersten Bitposition unterteilt worden ist, und die Teilkonstantenbitlängeninformationen 605 stellen dar, dass die erste und die zweite Teilkonstante, er halten durch Teilung der Konstanten, jeweils 24 Bits und 8 Bits haben. Die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 stellen dar, dass die erste Teilkonstante in der 0. Operation in der Instruktionsadresse 0x8000000B umfasst ist und die zweite Teilkonstante in der 0.Operation in der Instruktionsadresse 0x80000000C umfasst ist.
  • Wenn die Konstantentypinformationen 601 „Identifizierer" darstellen, wird auf die Identifiziererinformation 803 Bezug genommen, wo jeder Konstantenwert einem Identifizierer, geschrieben in dem Quellenprogramm, zugeordnet ist. Entsprechend den Beispiel-Identifizierer-Informationen 803, dargestellt in 6, wo der Wert „0x00001000" einem Identifizierer _a entspricht, wird der Identifizierer für die Konstante „0x00001000" als Identifizierer _a spezifiziert. Demzufolge werden die Konstantenteilungsinformationen 807 dazu verwendet, die originale Konstante zu spezifizieren, und wenn die Konstantentypinformationen 601 darstellen, dass die originale Konstante als ein Identifizierer in dem Quellenprogramm ausgedrückt wird, werden die Identifiziererinformationen 803 dazu verwendet, den Identifizierer zu spezifizieren. In den Fehlersuchsinformationen bzw. Debag-Informationen, dargestellt in 6, werden die Dateiidentifikationsinformationen 801 zu den Typinformationen 806 erzeugt, wenn das Fehlersuchsollprogramm 24 erzeugt wird, und sie sind seit diesem Zeitpunkt nicht geändert. Andererseits können die Konstantenteilungsinformationen 807, erzeugt zusammen mit dem Fehlersuchsollprogramm 24, während der Fehlersuche durch die Fehlersuchhilfsvorrichtung 41 erneuert werden. Alternativ können die Konstantenteilungsinformationen 807 während der Fehlersuche des Fehlersuchsollprogramms 24 erzeugt werden.
  • Das bedeutet, dass zu jedem Zeitpunkt, zu dem ein Ausführungscode, gespeichert in dem Speicher der Arbeitsumgebung, in der Fehlersuchsstufe geändert wird, die Konstantenwertinformationen 602, die Teilkonstantenzahlinformationen 603, die Konstantenteilungsbitpositionsinformationen 604, die Teilkonstantenbitlängeninformationen 605 und die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 in den Konstantenteilungsinformationen 807 entsprechend den Änderungen erneuert werden. Diese Erneuerung der Konstantenteilungsinformationen 807 wird durch die Konstantenänderungseinheit 50 durchgeführt. Auch werden, wenn die Fehlersuchinformationen nicht zusammen mit dem Fehlersuchsollprogramm 24 er zeugt worden sind, die Konstantenteilungsinformationen 807 basierend auf dem Ausführungscode, gespeichert in dem Speicher der Arbeit sumgebung in der Fehlersuchstufe, erzeugt. Diese Erzeugung der Konstantenteilungsinformationen 807 wird durch die Konstantenwiederherstellungseinheit 49 durchgeführt.
  • Die Benutzerschnittstelle 44 lässt die Anzeige 11 eine Fehlersuchbefehleingabeanforderung anzeigen und empfängt den Fehlersuchbefehl, eingegeben über das Tastenfeld 12. Die Benutzerschnittstelle 44 führt direkt den eingegebenen Fehlersuchbefehl zurück und lässt dann die Anzeige 11 ein Ausführungsergebnis des Fehlersuchbefehls anzeigen.
  • 7A stellt eine Dialoganzeige, angezeigt auf der Anzeige 11, dar, wenn die Benutzerschnittstelle 44 die vorstehende Verarbeitung durchführt.
  • Die Dialoganzeige, dargestellt in der Figur, umfasst eine Befehl-Zahl-Spalte, die eine Eingabefehlersuch-Befehlspalte, eine Spalte für eine absolute Adresse, die eine Adresse, spezifiziert als das Fehlersuchziel, darstellt, eine Maschinensprachspalte, die binäre Daten, gespeichert in der Adresse, darstellt, eine Spalte für einen ersten, mnemonischen Code, die einen mnemonischen Code einer ersten Operation, erhalten durch Zurückumwandeln der binären Daten, darstellt, eine Symbolspalte, die ein Parallelausführungssymbol „||" darstellt, das anzeigt, dass dort zwei Operationen vorhanden sind, und eine Spalte für einen zweiten, mnemonischen Code, die einen mnemonischen Code einer zweiten Operation darstellt.
  • Wenn der Programmierer den Fehlersuchbefehl über das Tastenfeld 12 eingibt, wird der Fehlersuchbefehl durch den Befehlinterpretierer 46 analysiert und durch die Arbeitsumgebung ausgeführt. Die Benutzerschnittstelle 44 lässt dann die Anzeige 11 das Ausführungsergebnis anzeigen.
  • In 7A stellt „0012>" in der Befehlzahlspalte eine Anforderung dar, um den 12. Fehlersuchbefehl einzugeben, „UX" in der Eingabefehlersuchbefehlspalte stellt dar, dass ein Rückumwandlungsbefehl eingegeben worden ist, und „0x80000000, 0x80000018" stellt eine Start-Adresse und eine Stopp-Adresse für die Rückumwandlung dar.
  • In der ersten und der zweiten mnemonischen Code-Spalte ist jeder mnemonische Code, in dem eine Teilkonstante gegen eine originale Konstante ersetzt worden ist, farbmäßig codiert, um ihn von anderen, mnemonischen Coden zu unterscheiden.
  • Die Benutzerschnittstelle 44 nimmt auch auf Fehlersuchinformationen Bezug, die in der Fehlersuchinformationsspeichereinheit 42 gespeichert sind, und lässt die Anzeige 11 Informationen anzeigen, die sich auf das Quellenprogramm in größerem Detail beziehen.
  • Hierbei prüft die Benutzerschnittstelle 44 die Fehlersuchsolladresse gegenüber den Quellendateiinformationen 804, spezifiziert das Quellenprogramm, das der Adresse entspricht, und lässt die Anzeige 11 den Namen und den Sprach-Typ des spezifizierten Quellenprogramms anzeigen. Die Benutzerschnittstelle 44 liest auch Angabezeilenzahlen entsprechend zu der Fehlersuchsolladresse von den Zeilenzahlinformationen 805 und lässt die Anzeige 11 die Zeilenzahlen anzeigen.
  • Wenn die Benutzerschnittstelle 44 den Fehlersuchbefehl empfängt, analysiert der Befehlinterpretierer 46 den Fehlersuchbefehl und steuert die Arbeitsumgebung entsprechend dem Analyseergebnis.
  • Hierbei steuert, wenn der Fehlersuchbefehl ein Befehl ist, das Fehlersuchsollprogramm 24 laufen zu lassen/zu stoppen, der Befehlinterpretierer 46 die Arbeitsumgebung, um das Fehlersuchsollprogramm 24 taufen zu lassen/zu stoppen.
  • Wenn der Fehlersuchbefehl ein Rückumwandlungsbefehl für einen spezifizierten Bereich ist, gibt der Befehlinterpretierer 46 einen Lesebefehl aus, der eine Startadresse und eine Datenlänge spezifiziert, und zwar zu der Arbeitsumgebung, die entsprechend Ausführungscode, gespeichert in dem spezifizierten Bereich von dem Speicher, liest.
  • Wenn der Fehlersuchbefehl ein Änderungsbefehl mit einer Schreibbestimmungsadressenspezifikation ist und ein neuer, mnemonischer Code, der geschrieben werden soll, über das Tastenfeld 12 eingegeben wird, lässt der Interpretierer 46 die Ausführungscodeumwandlungseinheit 48 den mnemonischen Code in einen Ausführungscode umwandeln und gibt einen Schreibbefehl aus, der eine Startadresse und eine Datenlänge zu der Arbeitsumgebung spezifiziert, die entsprechend den neuen Ausführungscode in die Schreibbestimmungsadresse in den Speicher hineinschreibt.
  • Wenn der Programmierer den Rückumwandlungsbefehl eingibt, und die Arbeitsumgebung binäre Daten, gelesen von dem Speicher, zu der Ausführungscoderückumwandlungseinheit 47 ausgibt, beurteilt die Ausführungscoderückumwandlungseinheit 47, ob die binären Daten ein Programmcode oder ein Datencode sind. Wenn die binären Daten ein Programmcode sind, wandelt die Ausführungscoderückumwandlungseinheit 47 die binären Daten zu einem mnemonischen Code entsprechend den Ausführungscodeinformationen 802 in der Fehlersuchinformationsspeichereinheit 42 zurück und gibt das Rückumwandlungsergebnis zu dem Befehlinterpretierer 46 aus. Wenn die binären Daten ein Datencode sind, wandelt die Ausführungscoderückumwandlungseinheit 47 die binären Daten zu einem Identifizierer entsprechend den Identifiziererinformationen 802 und den Typinformationen 806 in der Fehlersuchinformationsspeichereinheit 42 zurück und gibt das Rückumwandlungsergebnis zu dem Befehlinterpretierer 46 aus.
  • Die 7B–7E stellen das Verfahren einer Rückumwandlung der binären Daten durch die Ausführungscoderückumwandlungseinheit 47 dar. Wenn der Programmierer den Rückumwandlungsbefehl „UX" über das Tastenfeld 12 eingibt, wie dies in 7A dargestellt ist, werden binäre Daten „08123456", „67280500", „08000010", „60700500" ... „60740500", dargestellt in 7B, von dem Speicher der Arbeitsumgebung gelesen. Die Ausführungscoderückumwandlungseinheit 47 nimmt dann auf die Ausführungscodeinformationen 802 Bezug, um einen mnemonischen Code entsprechend den höchsten 8 Bits jedes binären Datensatzes zu spezifizieren.
  • In 7C entsprechen die 8 Bits „08" hoher Ordnung den binären Daten „08123456" einem Operationscode „SFST24". Dementsprechend spezifiziert die Ausführungscoderückumwandlungseinheit 47 die 24 Bits „123456" niedriger Ordnung als einen Konstanten-Operanden und erzeugt einen mnemonischen Code „SFST24 0x123456" als das Rückumwandlungsergebnis.
  • In 7D entsprechen „0x2" und „0x0" in den p2.0 und p2.2 Feldern in den binären Daten „67280500" einem Operationscode „MOV~, R0". Dementsprechend spezifiziert die Ausführungscoderückumwandlungseinheit 47 die 12 Bits „500" niedriger Ordnung als einen Operationscode „NOP" und erzeugt einen mnemonischen Code „MOV 0x78, R0 ||NOP" als das Rückumwandlungsergebnis.
  • Nach einer Rückumwandlung der anderen, binären Datensätze, dargestellt in 7B, in derselben Art und Weise, werden mnemonische Code, dargestellt in 7E, erhalten. Bedeutungen der mnemonischen Code werden nachfolgend dargestellt.
  • „SFST24 0x123456": Speichere eine Konstante „0x123456" in das Konstantenregister 46.
  • „MOV 0x78, R0": Kombiniere eine Konstante „0x78" und die Konstante, gespeichert in das Konstantenregister 76, und ordne das Kombinationsergebnis dem Register R0 zu. „SFST24 0x000010": Speichere eine Konstante „0x000010" in das Konstantenregister 76.
  • „ST R0, (0x00)": Speichere den Wert eines Registers R0 in der Adresse 0x00001000, die durch die Konstante „0x000010" spezifiziert ist, in dem Konstantenregister 76, und eine Konstante „0x00".
  • „SFST12 0x000": Speichere eine Konstante „0x000" in das Konstantenregister 76. „ADD R0, R0": Addiere den Wert des Registers R0 und den Wert des Registers R0 und Speichere das Additionsergebnis in das Register R0.
  • „SFST12 0x010": Speichere eine Konstante „0x010" in das Konstantenregister 76. „ ADD 0x4, R0": Addiere eine Konstante „0x4" zu dem Wert des Registers R0 und Speichere das Additionsergebnis in das Register R0.
  • „ST R0, (0x04)": Speichere den Wert des Registers R0 in der Adresse 0x00001004, die durch den Wert „000010", gespeichert in dem Konstantenregister 76, und einer Konstanten „0x00", spezifiziert ist.
  • Wenn binäre Daten zu einem mnemonischen Code durch die Ausführungscode rückwandlungseinheit 47 zurückgewandelt werden, beurteilt die Konstantenwiederherstellungseinheit 49, ob der mnemonische Code eine zu einer Konstanten in Bezug gesetzte Operation umfasst. Hierbei bedeutet die auf eine Konstante in Bezug gesetzte Operation eine Operation, die einen Konstanten-Operanden als ein Ergebnis einer Zurückumwandlung der binären Daten gemäß den Instruktionsformaten umfasst, dargestellt in den 4A–4C. Wenn der mnemonische Code die auf eine Konstante in Bezug gesetzte Operation umfasst, ist dabei eine Möglichkeit vorhanden, dass der Operand eine Teilkonstante ist, die durch Dividieren einer Langwortkonstanten, geschrieben in dem Quellenprogramm, erzeugt worden ist. In einem solchen Fall erfasst die Konstantenwiederherstellungseinheit 49 Konstantenteilungsinformationen, die sich auf die Teilkonstante in der Fehlersuchinformationsspeichereinheit 42 beziehen, um die originale Konstante zu identifizieren.
  • Wenn die Konstantenteilungsinformationen in der Fehlersuchinformationsspeichereinheit 42 existieren, spezifiziert die Konstantenwiederherstellungseinheit 49 die auf die Konstante bezogene Operation als eine der Teilkonstantenverschiebungs- und Speicheroperation und die Benutzungsoperation der gespeicherten Konstanten und ersetzt die Teilkonstante, umfasst in der zu der Konstanten in Bezug gesetzten Operation, gegen die originale Konstante, dargestellt in den Konstantenteilungsinformationen. Wenn andererseits die Konstantenteilungsinformationen nicht in den Fehlersuchinformationen existieren, liest die Konstantenwiederherstellungseinheit 49 binäre Daten angrenzend an die zu der Konstanten in Bezug gesetzten Operation von dem Speicher, stellt die originale Konstante der zu der Konstanten in Bezug gesetzten Operation unter Verwendung von Teilkonstanten, erhalten von den binären Daten, wieder her, und ersetzt die Teilkonstante in der auf die Konstante in Bezug gesetzte Operation gegen die wiederhergestellte, originale Konstante. Die Konstantenwiederherstellungseinheit 49 erzeugt dann Konstantenteilungsinformationen, die die originale Konstante und die Adressen der sich auf die Konstante in Bezug gesetzte Operation und Operationen, die die erhaltenen Teilkonstanten umfassen, bezieht, und speichert die Konstantenteilungsinformationen in die Fehlersuchinformationsspeichereinheit 42.
  • In 7E ist, da der mnemonische Code „MOV 0x78, R0" unmittelbar nach dem mnemonischen Code „SFST24 0x123456" geschrieben ist, „MOV 0x78, R0" die Benutzungsoperation der gespeicherten Konstanten, deren Konstanten-Operand „0x78" tatsächlich eine einer Vielzahl von Teilkonstanten ist, um in dem Konstantenregister 76 gespeichert zu werden. Dementsprechend ersetzt die Konstantenwiederherstellungseinheit 49 die Teilkonstante gegen die originale Konstante und gibt den sich ergebenden mnemonischen Code zu der Befehlsinterpretiereinheit 76 aus. Ähnlich ersetzt, da der Konstanten-Operand „0x123456" in dem mnemonischen Code „SFST24 0x123456" tatsächlich eine der Vielzahl von Teilkonstanten ist, die in das Konstantenregister 76 hinein gespeichert werden sollen, die Konstantenwiederherstellungseinheit 49 die Teilkonstante gegen die originale Konstante und gibt den sich ergebenden, mnemonischen Code zu dem Befehlinterpretierer 46 aus. Ähnlich ersetzt, da der Konstanten-Operand „0x123456" in dem mnemonischen Code „SFST24 0x123456" tatsächlich einer der Mehrzahl von Teilkonstanten ist, die in dem Konstantenregister 76 gespeichert werden sollen, die Konstantenwiederherstellungseinheit 49 die Teilkonstante gegen die originale Konstante und gibt den sich ergebenden, mnemonischen Code zu dem Befehlinterpretierer 46 aus. Diese Ersetzungsverarbeitung wird im Detail später erläutert werden.
  • Wenn die Benutzerschnittstelle 44 den Änderungsbefehl empfängt und der Befehlsinterpretierer 46 einen neuen, mnemonischen Code ausgibt, der zu der Ausführungscodeumwandlungseinheit 48 geschrieben werden soll, gibt die Ausführungscodeumwandlungseinheit 48 einen Schreibbefehl aus, der eine Startadresse und eine Datenlänge zu der Sollschnittstelle 51 spezifiziert. Die Ausführungscodeumwandlungseinheit 48 wandelt auch den neuen, mnemonischen Code in binäre Daten entspre chend den Ausführungscodeinformationen 802 um und gibt die binären Daten zu der Sollschnittstelle 51 aus.
  • Wenn der mnemonische Code zu den binären Daten in der Ausführungscodeumwandlungseinheit 48 umgewandelt wird, beurteilt die Konstantenänderungseinheit 50, ob die binären Daten eine zu einer Konstante in Bezug stehende Operation umfassen. Falls die zu der Konstanten in Bezug gesetzte Operation umfasst ist, beurteilt die Konstantenänderungseinheit 50, dass eine Langwortkonstante, umfasst in der alten, zu einer Konstante in Bezug gesetzten Operation, die ersetzt werden soll, in eine Mehrzahl von Teilkonstanten in dem Speicher unterteilt worden ist. Die Konstantenänderungseinheit 50 durchsucht entsprechend die Fehlersuchinformationsspeichereinheit 42 nach Konstantenteilungsinformationen, die sich auf die alte Langwortkonstante beziehen, um die Konstantenteilungsbitpositionsinformationen 604 und die Teilkonstantenbitlängeninformationen 605 zu erhalten. Falls die Konstantenteilungsinformationen in der Fehlersuchinformationsspeichereinheit 42 existieren, unterteilt die Konstantenänderungseinheit 50 die Langwortkonstante, umfasst in der neuen, zu einer Konstanten in Bezug stehenden Operation gemäß der Konstantenteilungsbitpositionsinformationen 604 und den Teilkonstantenbitlängeninformationen 605.
  • Die Konstantenänderungseinheit 50 gibt dann einen Schreibbefehl, der eine Startadresse und eine Datenlänge spezifiziert, zu der Sollschnittstelle 41 aus, so dass jede Teilkonstante, erhalten durch Unterteilen der neuen Langwortkonstanten, in den Arbeitsumgebungsspeicher hinein geschrieben werden wird.
  • Die Grafikbenutzerschnittstelle 45 spezifiziert, wenn der Programmierer eine Hinweisvorrichtung betätigt, wie beispielsweise eine Mouse 38 oder Cursortasten, auf dem Tastenfeld 12, und zwar auf der Anzeige 11, die eine Mehrzahl von mnemonischen Coden anzeigt, und zwar einen der Mehrzahl der mnemonischen Code, und wartet auf die Eingabe eines neuen, mnemonischen Codes, der geschrieben werden soll. Der eingegebene, neue, mnemonische Code wird dann in binäre Daten durch die Ausführungscodeumwandlungseinheit 48 umgewandelt. Die Ausführungscodeumwandlungseinheit 48 gibt einen Schreibbefehl, der eine Startadresse und eine Datenlänge spezifiziert, zu der Arbeitsumgebung aus, die entsprechend die binären Daten in den Arbeitsumgebungsspeicher hinein schreibt. Das Nachfolgende ist eine Erläuterung der Verarbeitung der Konstantenwiederherstellungseinheit 49 unter Bezugnahme auf 9.
  • Die Konstantenwiederherstellungseinheit 49 stellt eine Variable i auf 1 (Schritt S20) ein und wartet, bis die Ausführungscoderückwandlungseinheit 47 einen Ausführungscode i, gelesen von der „i"-ten Adresse in einem Speicherbereich, spezifiziert durch den Fehlersuchbefehl, zurückgewandelt hat. Die Konstantenwiederherstellungseinheit 49 empfängt dann einen mnemonischen Code i (zurückgewandelter Code i) von der Ausführungscoderückwandlungseinheit 47 (Schritt S21).
  • Die Konstantenwiederherstellungseinheit 49 beurteilt, ob der zurückgewandelte Code i eine zu einer Konstanten in Bezug gesetzte Operation ist (Schritt S22). Wenn der zurückgewandelte Code i nicht die zu der Konstanten in Bezug gesetzten Operation ist, wird der zurückgewandelte Code i direkt auf der Anzeige 11 angezeigt, und die Verarbeitung schreitet zu Schritt S34 fort. Die Konstantenwiederherstellungseinheit 49 beurteilt, ob die Variable i eine Variable n ist (Schritt S34). Wenn die Variable i gleich zu der Variablen n ist, schließt die Konstantenwiederherstellungseinheit 49 die Verarbeitung ab. Ansonsten schreitet die Konstantenwiederherstellungseinheit 49 zu Schritt S35 fort, wo die Variable i erhöht wird, und kehrt dann zu Schritt S21 zurück.
  • Wenn der zurückgewandelte Code i die sich auf die Konstante beziehende Operation i (Schritt S22) ist, erfasst die Konstantenwiederherstellungseinheit 49 Konstantenteilungsinformationen j, die der zu der Konstanten in Bezug gesetzten Operation i in der Fehlersuchinformationsspeichereinheit 42 entsprechen (Schritt S23), und beurteilt, ob die Konstantenteilungsinformationen j existieren (Schritt S24).
  • Hier wird erläutert, wie die Konstantenteilungsinformationen j, die der zu der Konstanten in Bezug gesetzten Operation i entsprechen, zu finden sind.
  • Die Konstantenwiederherstellungseinheit 49 nimmt auf die Konstantenteilungsbitpositionsinformationen 604 in den Konstantenteilungsinformationen Bezug und extrahiert Teilkonstanten von einer originalen Konstanten, dargestellt in den Konstantenwertinformationen 602, entsprechend den Konstantenteilungsbitpositionsinformationen 604. Die Konstantenwiederherstellungseinheit 49 vergleicht dann die Teilkonstante der zu der Konstanten in Bezug gesetzten Operation i mit jeder der extrahierten Teilkonstanten.
  • Die vorstehende Extraktion und der Vergleich werden für alle Sätze von Konstantenteilungsinformationen, gespeichert in der Fehlersuchinformationsspeichereinheit 42, durchgeführt. Wenn ein Satz von Konstantenteilungsinformationen dieselbe Teilkonstante wie diejenige der zu der Konstanten in Bezug gesetzten Operation i besitzt, identifiziert die Konstantenwiederherstellungseinheit 49 den Satz von Konstantenteilungsinformationen als die Konstantenteilungsinformationen j.
  • Wenn andererseits eine Mehrzahl von Sätzen von Konstantenteilungsinformationen dieselbe Teilkonstante wie diejenige der zu der Konstanten in Bezug gesetzten Operation i besitzt, wird eine Adresse i der zu der Konstanten in Bezug gesetzten Operation i mit jeder Adresse, geschrieben in den Teilkonstantenbenutzungsoperations-Adresseninformationen 606, in jeder der Mehrzahl Konstantenteilungsinformationen, verglichen. Als Folge wird, falls ein Satz von Konstantenteilungsinformationen, deren Teilkonstantenbenutzungsoperations-Adresseninformationen 606 eine Adresse i der zu der Konstanten in Bezug gesetzten Operation i darstellen, erfasst wird, wird der Satz von Konstantenteilungsinformationen als die Konstantenteilungsinformationen j identifiziert.
  • Die Teilkonstante in dem zurückgewandelten Code i wird gegen den originalen Konstantenwert, geschrieben in den Konstantenteilungsinformationen j, ersetzt (Schritt S25). Als nächstes werden ein Komma „," und eine Konstantenteilungsbitposition b, dargestellt in den Konstantenteilungsinformationen j, an dem Ende des zurückgewandelten Codes i hinzugefügt (Schritt S26).
  • Die Konstantenwiederherstellungseinheit 49 sucht eine Teilkonstantenbitlänge, unter Teilkonstantenbitlängen, dargestellt in den Konstantenteilungsinformationen j, auf, und passt eine Teilkonstantenbitlänge k der zu der Konstanten in Bezug gesetzten Operation i an (Schritt S27).
  • Die Konstantenwiederherstellungseinheit 49 beurteilt, ob die Teilkonstante der zu der Konstanten in Bezug gesetzten Operation i eine Teilkonstante ist, beginnend von der höchsten Bitposition aus der originalen Konstanten (Schritt S28). Hierbei wird die Teilkonstantenbitlänge k zu der Konstantenteilungsbitposition b hinzugefügt, um zu beurteilen, ob das Additionsergebnis die Bitlänge der originalen Konstanten anpasst.
  • Falls sie nicht zueinander passen, wird der Wert „b + k" nach der Konstantenteilungsbitposition b hinzu addiert, die zu dem zurückgewandelten Code i hinzuaddiert worden ist (Schritt S30).
  • Als Folge wird der zurückgewandelte Code i auf der Anzeige 11 zusammen mit der originalen Konstanten, der Konstantenteilungsbitposition b und dem Wert „b + k" angezeigt. Von den angezeigten Informationen kann der Programmierer leicht verstehen, dass die Teilkonstante, angeordnet in den „b"-ten bis „b + k"-ten Bitpositionen in der Langwortkon stanten, geschrieben in dem Quellenprogramm, als ein Konstanten-Operand der sich auf eine Konstante beziehenden Operation i verwendet wird.
  • Falls sie im Schritt S28 zueinander passen, wird das Symbol $ nach der Konstantenteilungsbitposition b hinzugefügt (Schritt S29). Als Ergebnis wird der zurückgewandelte Code i auf der Anzeige 11 zusammen mit der originalen Konstanten, der Konstantenteilungsbitposition b und dem Symbol $ angezeigt. Anhand der angezeigten Informationen kann der Programmierer leicht verstehen, dass die Teilkonstante, angeordnet in den „b"-ten bis höchsten Bitpositionen in der Langwortkonstanten, geschrieben in dem Quellenprogramm, als ein Konstanten-Operand der sich auf eine Konstante beziehenden Operation i verwendet wird.
  • Die Konstantenwiederherstellungseinheit 49 nimmt auf die Konstantentypinformationen 601 in den Konstantenteilungsinformationen j Bezug (Schritt S31). Falls die Konstantentypinformationen 601 „Identifizierer" darstellen, sucht die Konstantenwiederherstellungseinheit 49 einen Identifizierer entsprechend der originalen Konstanten der sich auf die Konstante beziehenden Operation i von den Identifiziererinformationen 803 in den Fehlersuchinformationen auf (Schritt S32). Die Konstantenwiederherstellungseinheit 49 ersetzt dann die originale Konstante, geschrieben in der sich auf die Konstante beziehenden Operation i, gegen den wieder aufgesuchten Identifizierer (Schritt S33), und schreitet zu Schritt S34 fort.
  • Die vorstehende Erläuterung basiert auf einem Fall, wenn die Konstantenteilungsinformationen j in der Fehlersuchinformationsspeichereinheit 42 existieren. Als nächstes wird die Verarbeitung erläutert, wenn die Konstantenteilungsinformationen j nicht existieren.
  • Es ist anzumerken, dass sich, da die Ablaufplanung an dem Fehlersuchprogramm 24 zu dem Zeitpunkt des Zusammenstellens durchgeführt worden ist, die Ausführungsreihenfolge der Operationen von der Ausführungsreihenfolge, geschrieben in dem Quellenprogramm, unterscheidet. Allerdings werden, in der Ablaufplanung, Teilkonstantenverschiebe- und Speicheroperationen und eine Benutzungsoperation der gespeicherten Konstanten, die sich auf eine Langwortkonstante bezieht, niemals voneinander durch eine Operation separiert, die sich auf eine andere Langwortkonstante bezieht. Auch wird die Reihenfolge, in der die Teilkonstantenverschiebungs- und Speicheroperationen zum Defi nieren von Operanden durch die gespeicherte Konstantenbenutzungsoperation zur Verwendung der Operanden gefolgt wird, niemals geändert.
  • Da die Ausführungsreihenfolge der Operationen ohne Unterbrechung der Reihenfolge, die vorstehend erwähnt ist, modifiziert worden ist, ist es möglich, die originale Konstante gerade dann zu erhalten, wenn die Konstantenteilungsinformationen nicht während der Zusammenstellung erzeugt worden sind. Dies kann durch aufeinanderfolgendes Lesen der Teilkonstantenverschiebungs- und Speicheroperationen und/oder der Benutzungsoperation der gespeicherten Konstanten von dem Arbeitsumgebungsspeicher und Anordnen der Teilkonstanten-Operanden, umfasst in den gelesenen Operationen, vorgenommen werden.
  • Wenn die sich auf die Konstante beziehende Operation i eine gespeicherte Konstantenbenutzungsoperation ist, wird jede Teilkonstantenverschiebungs- und Speicheroperation, angeordnet in einer rückwärtigen Position der Benutzungsoperationen der gespeicherten Konstante, gelesen, und eine Teilkonstante, umfasst in jeder gelesenen Operation, wird sequentiell in den Speicher 15 in dem Host Computer 10 hinein geschrieben. Die originale Konstante wird durch Kombinieren der Teilkonstanten, geschrieben in dem Speicher 15, mit einer Teilkonstanten der gespeicherten Konstantenbenutzungsoperation, erhalten.
  • Wenn die sich auf die Konstante beziehende Operation i eine Teilkonstantenverschiebungs- und Speicheroperation ist, wird eine gespeicherte Konstantenbenutzungsoperation von den Operationen, angeordnet in einer Vorwärtsrichtung der Teilkonstantenverschiebungs- und Speicheroperation, erfasst. Da die erfasste, gespeicherte Konstantenbenutzungsoperation die originale Konstante einer Teilkonstanten verwendet, umfasst in der Teilkonstantenverschiebungs- und Speicheroperation, als einen der Operanden, wird die originale Konstante in derselben Verarbeitung, wie vorstehend, erhalten.
  • Die Teilkonstantenbitlänge k der sich auf die Konstante beziehenden Operation i wird von der Standardbitlänge L der originalen Konstanten subtrahiert, um die Differenzbitlänge m zu erzeugen (Schritt S36). Als nächstes beurteilt die Konstantenwiederherstellungseinheit 49, ob Ausführungshistorie-Informationen in dem Arbeitsumgebungsspeicher gespeichert sind (Schritt S37).
  • Hierbei sind die Ausführungshistorie-Informationen aus Adressen von Operationen in dem Fehlersuchsollprogramm 24 aufgebaut, die ausgeführt worden sind. Wenn die Si mulator-Software 17 die Arbeitsumgebung ist, werden die Ausführungshistorie-Informationen in dem Speicher 15 gespeichert. Wenn der ROM-Emulator 20 die Arbeitsumgebung ist, können, andererseits, die Ausführungshistorie-Informationen nicht in dem Speicher 26 aufgrund dessen begrenzter Speichergröße gespeichert werden. Wenn die ICE-Karte 30 die Arbeitsumgebung ist, kann nur die eingeschränkte Menge der Ausführungshistorie-Informationen in dem Speicher 33 aufgrund dessen begrenzter Speichergröße gespeichert werden (einige ICE-Karten besitzen nicht eine Kapazität zum Speichern der Ausführungshistorie-Informationen).
  • Der Grund, warum die Konstantenwiederherstellungseinheit 49 beurteilt, ob die Ausführungshistorie-Informationen in dem Schritt S37 existieren, ist derjenige, dass die originale Konstante akkurater unter Bezugnahme auf die Ausführungshistorie-Informationen wiederhergestellt werden kann.
  • Zum Beispiel ist es, wenn eine herkömmliche Verzweigungsinstruktion, die zu irgendeiner von zwei Routen führt, die jeweils eine Teilkonstantenverschiebung umfasst, und eine Speicheroperation in dem Fehlersuchsollprogramm 24 umfasst ist, notwendig, zu spezifizieren, welche Teilkonstantenverschiebungs- und Speicheroperation ausgeführt worden ist, um eine Teilkonstante, gespeichert in dem Konstantenregister 76, zu identifizieren. In einem solchen Fall kann die originale Konstante nicht nur durch Leseoperationen in den Vonrwärts/Rückwärtsrichtungen der zu der Konstanten in Bezug gesetzten Operation i wiederhergestellt werden.
  • Allerdings kann, unter Verwendung der Ausführungshistorie-Informationen, die originale Konstante korrekt wiederhergestellt werden, da eine Adresse der Teilkonstantenverschiebungs- und Wiederherstellungsoperation, die ausgeführt worden ist, in den Ausführungshistorie-Informationen gespeichert worden ist. Demzufolge kann die originale Konstante akkurater unter Verwendung der Ausführungshistorie-Informationen identifiziert werden.
  • Wenn die Ausführungshistorie-Informationen in dem Arbeitsumgebungsspeicher existieren, stellt die Konstantenwiederherstellungseinheit 49 Operationsadressen, spezifiziert durch die Ausführungshistorie-Informationen, als einen Suchbereich ein (Schritt S38). Wenn andererseits die Ausführungshistorie-Informationen nicht in dem Speicher existieren, stellt die Konstantenwiederherstellungseinheit 49 Operationsadressen angrenzend an die zu der Konstanten in Bezug gesetzten Operation i als einen Suchbereich ein (Schritt S39).
  • Die Konstantenwiederherstellungseinheit 49 erfasst Operationen p, deren Teilkonstanten-Operand nicht mehr als die Differenzbitlänge m von dem Suchbereich ist (Schritt S40).
  • Wenn eine Operation, deren Teilkonstante dieselbe Länge wie die Differenzbitlänge m besitzt, erfasst wird, wird die Teilkonstante der zu der Konstanten in Bezug gesetzten Operation i mit der Teilkonstanten und der erfassten Operation kombiniert.
  • Wenn eine Mehrzahl von Operationen, von denen jede eine Teilkonstante kürzer als die Differenzbitlänge m besitzt, erfasst ist, wird die Teilkonstante der zu der Konstante in Bezug gesetzten Operation i mit den Teilkonstanten der erfassen Operationen kombiniert, bis die gesamte Bitlänge die Standard-Langwort-Konstantenlänge (32 Bits in dem vorliegenden Beispiel) erreicht.
  • Die Konstantenwiederherstellungseinheit 49 erzeugt eine Mustervorlage der Konstantenteilungsinformationen j für die zu der Konstanten in Bezug gesetzten Operation i (Schritt S41) und berechnet die originale Konstante von der Teilkonstanten der zu der Konstanten in Bezug gesetzten Operation i und der Teilkonstanten der Operationen p, wobei die originale Konstante dann in die Konstantenteilungsinformationen j als die Konstantenwertinformationen 602 hinein geschrieben werden (Schritt S42). Die Konstantenwiederherstellungseinheit 49 schreibt auch die Teilkonstantenzahlinformationen 603, die Konstantenteilungsbitpositionsinformationen 604 und die Teilkonstantenbitlängeninformationen 605, die von den Bitlängen der Teilkonstanten der zu der Konstanten in Bezug gesetzten Operation i und der Operation p erhalten sind, in die Konstantenteilungsinformationen j hinein (Schritt S43). Die Konstantenwiederherstellungseinheit 49 schreibt dann die Adresse der zu der Konstanten in Bezug gesetzten Operation i und die Adressen der Operationen p in die Konstantenteilungsinformationen j als die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 hinein (Schritt S44).
  • Um die originale Konstante so wiederherzustellen, wie dies vorstehend angegeben ist, ist es notwendig, häufig Ausführungscode von dem Speicher zu lesen. Wenn die Arbeitsumgebung die ICE-Karte 30 ist, können Daten unter einer hohen Geschwindigkeit zwischen dem Host Computer 10 und der ICE-Karte 30 übertragen werden, da sie durch die parallele Leitung 31 verbunden sind. Auch kann, wenn die Arbeitsumgebung die Si mulator-Software 17 ist, die Arbeitsumgebung Ausführungscode leicht von dem Speicher 15 in dem Host Computer 10 lesen.
  • Wenn die Arbeitsumgebung der ROM-Emulator 20 allerdings ist, können Daten nicht unter einer hohen Geschwindigkeit zwischen dem Host Computer 10 und dem ROM-Emulator 20 übertragen werden, da sie durch die serielle Leitung 21 verbunden sind. In einem solchen Fall nimmt es eine beträchtliche Zeit in Anspruch, wiederholt die Ausführungscode zu lesen und die originale Konstante wiederherzustellen. Demzufolge ist es bevorzugt, Konstantenteilungsinformationen während der Erzeugung des Fehlersuchsollprogramms zu erzeugen und die Konstantenteilungsinformationen in der Fehlersuchinformationsspeichereinheit 42 zu speichern, so dass das Fehlersuchen einfach durchgeführt werden kann.
  • Das Nachfolgende ist eine spezifische Erläuterung der Verarbeitung der Konstantenwiederherstellungseinheit 49 unter Bezugnahme auf die 7B–7F.
  • Nachdem die Arbeitsumgebung den Ausführungscode „08123456" von der Adresse 0x80000000 liest, wandelt die Ausführungscoderückwandlungseinheit 47 den Ausführungscode zu dem mnemonischen Code „SFST24 0x123456" zurück. Die Konstantenwiederherstellungseinheit 49 beurteilt, dass der mnemonische Code „SFST24 0x123456" eine zu der Konstanten in Bezug gesetzte Operation ist (Schritt S22). Die Konstantenwiederherstellungseinheit 49 erfasst Konstantenteilungsinformationen, deren Teilkonstantenbenutzungsoperations-Adresseninformationen 606 eine Adresse 0x80000000 in den Fehlersuchinformationen, dargestellt in 6, darstellen (Schritt S23). Wenn die Konstantenteilungsinformationen erfasst sind, erhält die Konstantenwiederherstellungseinheit 49 die originale Konstante „0x12345678" von den Konstantenwertinformationen 602 und ändert den mnemonischen Code „SFST24 0x123456", angezeigt auf der Anzeige 11, zu dem mnemonischen Code „SFST24 0x12345678". Die Konstantenwiederherstellungseinheit 49 erhält dann die Konstantenteilungsbitposition „8" und die Teilkonstantenbitlängen „24" und „8" jeweils von den Konstantenteilungsbitpositionsinformationen 604 und den Teilkonstantenbitlängeninformationen 605, und ändert den angezeigten, mnemonischen Code „SFST24 0x12345678" zu „SFST24 0x12345678, 8" (Schritt S26). Auch beurteilt, da 24 (Teilkonstanten-Bitlänge) + 8 (Konstanten-Teilungs-Bitposition) = 32 (Langwort-Konstanten-Bitlänge) gilt, die Konstantenwiederherstellungseinheit 49, dass die Teilkonstante der zu der Konstanten in Bezug gesetzten Operation „SFST 0x12345678, 8" eine Teilkonstante ist, beginnend von der höchsten Bitposition der originalen Konstanten (Schritt S28). Dementsprechend fügt die Konstantenwiederherstellungseinheit 49 das Symbol $ zu dem angezeigten, mnemonischen Code hinzu, und das Ergebnis wird als „SFST24 0x12345678, 8, $" auf der Anzeige 11 angezeigt (Schritt S29). Da die Konstantentypinformationen 601 „Zahl" darstellen (Schritt S31), schließt die Konstantenwiederherstellungseinheit 49 die Verarbeitung ab.
  • Wenn andererseits die Konstantenteilungsinformationen nicht im Schritt S24 erfasst werden, subtrahiert die Konstantenwiederherstellungseinheit 49 die Teilkonstantenbitlänge (24) der zu der Konstanten in Bezug gesetzten Operation „SFST24 0x123456" von der Standardkonstantenbitlänge (32) und erhält die Differenzbitlänge (8). Die Konstantenwiederherstellungseinheit 49 erfasst dann zu der Konstanten in Bezug gesetzte Operationen von den Adressen angrenzend an die Adresse 0x80000000. Hierbei beurteilt die Konstantenwiederherstellungseinheit 49 zuerst, ob die Ausführungshistorie-Informationen in dem Speicher gespeichert sind (Schritt S37). Falls dies der Fall ist, erfasst die Konstantenwiederherstellungseinheit 49 die zu den Konstanten in Bezug gesetzten Operationen von Adressen, spezifiziert durch die Ausführungshistorie-Informationen (Schritt S38). Ansonsten erfasst die Konstantenwiederherstellungseinheit 49 die zu der Konstanten in Bezug gesetzten Operationen von den Adressen angrenzend an die Adresse 0x80000000 (Schritt S39).
  • Als Folge werden die zu der Konstante in Bezug gesetzten Operationen „SFST12 0x000", „MOV 0x78, R0" und „SFST24 0x000010" von dem mnemonischen Code, dargestellt in 7E, erfasst. Unter diesen wird die zu der Konstanten in Bezug gesetzte Operation „SFST12 0x000" ausgeschlossen, da sie die 12-Bit-Teilkonstante besitzt, die länger als die Differenzbitlänge (8 Bits) ist. Demzufolge wird die zu der Konstanten in Bezug gesetzte Operation „MOV 0x78, R0" ausgewählt, die die Teilkonstante „0x78" kürzer als die Differenzbitlänge (8 Bits) besitzt, und die näher zu der Konstanten in Bezug gesetzten Operation „SFST 0x123456" liegt. Die Konstantenwiederherstellungseinheit 49 spezifiziert die zu der Konstanten in Bezug gesetzte Operation „MOV 0x78, R0" als die gespeicherte Konstantenbenutzungsoperation, die die Teilkonstante der Teilkonstantenverschiebungs- und Speicheroperation „SFST24 0x123456" verwendet.
  • In den Schritten S40–S44 spezifiziert die Konstantenwiederherstellungseinheit 49 die Konstantenwertinformationen 602, die Teilkonstantenzahlinformationen 603, die Kon stantenteilungsbitpositionsinformationen 604, die Teilkonstantenbitlängeninformationen 605 und die Teilkonstantenverwendungsoperationsadresseninformationen 606, und schreibt sie in die Konstantenteilungsinformationen hinein, ebenso wie „Zahl" in die Konstantenwertinformationen 601 geschrieben wird. Als Folge werden die Konstantenteilungsinformationen erzeugt und in der Fehlersuchinformationsspeichereinheit 42 gespeichert. Die Verarbeitung schreitet dann zu den Schritten S25–S33 fort, und als Ergebnis wird der mnemonische Code „SFST24 0x12345678, 8, $" erzeugt.
  • Als nächstes liest die Arbeitsumgebung den Ausführungscode „08000010" von der Adresse 0x80000008, die Ausführungscodeumwandlungseinheit 47 wandelt den Ausführungscode zu dem mnemonischen Code „SFST24 0x000010" zurück. Die Konstantenwiederherstellungseinheit 49 beurteilt, dass der mnemonische Code „SFST24 0x000010" eine zu einer Konstanten in Bezug gesetzte Operation ist (Schritt S22). Die Konstantenwiederherstellungseinheit 49 erfasst Konstantenteilungsinformationen, die der zu der Konstanten in Bezug gesetzten Operation „SFST24 000010" in den Fehlersuchinformationen, dargestellt in 6, entspricht (Schritt S23). Wenn die Konstantenteilungsinformationen erfasst sind, erhält die Konstantenwiederherstellungseinheit 49 die originale Konstante „0x00001000" von den Konstantenwertinformationen 602 und ändert den mnemonischen Code „SFST24 0x000010", angezeigt auf der Anzeige 11, zu dem mnemonischen Code „SFST24 0x00001000". Die Konstantenwiederherstellungseinheit 49 erhält dann die Konstante die Teilungsbitposition „8" und die Teilkonstantenbitlängen „24" und „8" jeweils von den Konstantenteilungsbitpositioneninformationen 604 und den Teilkonstantenbitlängeninformationen 605, und ändert den angezeigten, mnemonischen Code „SFST24 0x00001000" zu „SFST24 0x00001000, 8" (Schritt S26). Auch beurteilt, da 24 (Teilkonstanten-Bitlänge) + 8 (Konstanten-Teilungs-Bitpositionen) = 32 (Langwort-Konstanten-Bitlänge) gilt, die Konstantenwiederherstellungseinheit 49, dass die Teilkonstante der zu der Konstanten in Bezug gesetzten Operation „SFST 0x00001000, 8" eine Teilkonstante ist, beginnend von der höchsten Bit-Position der originalen Konstanten aus (Schritt S28). Dementsprechend fügt die Konstantenwiederherstellungseinheit 49 das Symbol $ zu dem angezeigten, mnemonischen Code hinzu, und als ein Ergebnis wird „SFST24 0x00001000, 8, $" auf der Anzeige 11 angezeigt (Schritt S29). Die Konstantenwiederherstellungseinheit 49 beurteilt dann, ob die Konstantentypinformationen 601 „Identifizierer" darstellen (Schritt S31). Da die Konstantentypinformation 601 für die Konstante „0x00001000" „Identifizierer" in 6 darstellen, wird ein Identifizierer _a entsprechend zu der Konstanten „0x00001000" von den Identifiziererinformationen 803 aufgesucht, und der angezeigte, mnemonische Code „SFST24 0x00001000, 0, $" wird zu „SFST24 _a, 8, $" geändert. Der mnemonische Code, angezeigt als ein Ergebnis der vorstehenden Verarbeitung, ist in 7F dargestellt.
  • Hierbei codiert die Benutzerschnittstelle 44 farbemäßig jede Gruppe zu einer Konstanten in Bezug gesetzten Operationen, die sich auf eine Langwortkonstante beziehen, während andere Ausgaben in einer unterschiedlicher Farbe angezeigt werden. In 7F werden, zum Beispiel, „SFST24 0x12345678, 8, $" und „MOV 0x12345678, R0", die sich auf die Konstante „0x12345678" beziehen, in einer Farbe 1 angezeigt, während „SFST24 a, 8, $" und ST R0, (a)", die sich auf einen Identifizierer _a beziehen, in einer Farbe 2 angezeigt werden.
  • Dieselbe Verarbeitung wird für die Adressen 0x80000010 bis 0x80000018 wiederholt, und als Ergebnis werden mnemonische Code „SFST24 0x12345678, 8, $" bis „ST R0, (_b)" auf der Anzeige 11 angezeigt.
  • Das Nachfolgende ist eine Erläuterung der Verarbeitung der Konstantenänderungseinheit 50, wenn der Programmierer einen Ausführungscodeänderungsbefehl über das Tastenfeld 12 ausgibt, und zwar unter Bezugnahme auf die 10A und 10B.
  • In 10A wartet, wenn der Änderungsbefehl eingegeben ist, die Konstantenänderungseinheit 50 auf die Eingabe zur Änderung einer Solladresse d (Schritt S70). Die Arbeitsumgebung liest einen Ausführungscode von der Änderungssolladresse d (Schritt S71) und die Ausführungscoderückumwandlungseinheit 47 wandelt den gelesenen Ausführungscode zurück, um den alten, mnemonischen Code x zu erhalten. Der alte, mnemonische Code x wird auf der Anzeige 11 zusammen mit dem Symbol „?" zum Anfordern, einen neuen mnemonischen Code y einzugeben, angezeigt (Schritt S72). Die Konstantenänderungseinheit 50 wartet auf die Tasteneingabe.
  • Beim Empfangen der Tasteneingabe wird beurteilt, ob der eingegebene Tastencode ein Freiraum ist (Schritt S75). Falls dies der Fall ist, schreitet die Verarbeitung zu Schritt S74 fort und eine Adresse d wird erneuert. Ansonsten schreitet die Verarbeitung zu Schritt S76 fort.
  • Es wird beurteilt, ob der eingegebene Tastencode eine Periode „." ist (Schritt S76). Falls dies der Fall ist, endet die Verarbeitung. Ansonsten schreitet die Verarbeitung zu Schritt S51 fort, wo die Konstantenänderungseinheit 50 beurteilt, ob der neue, mnemonische Code y eine zu einer Konstanten in Bezug gesetzte Operation ist. Falls er nicht die zu einer Konstanten in Bezug gesetzte Operation ist, beurteilt die Konstantenänderungseinheit, ob eine Konstante des neuen, mnemonischen Codes y ein Identifizierer ist (Schritt S52). Falls dies der Fall ist, wird eine Zahl entsprechend dem Identifizierer von den Fehlersuchinformationen aufgesucht und der Identifizierer wird gegen die Zahl ersetzt (Schritt S53).
  • Als nächstes wird beurteilt, ob der alte, mnemonische Code x eine zu einer Konstanten in Bezug gesetzte Operation ist (Schritt S54). Falls dies nicht der Fall ist, wird eine Warnung angezeigt (Schritt S55), und der alte, mnemonische Code x wird gegen den neuen, mnemonischen Code y ersetzt (Schritt S56), bevor zu dem Schritt S74 fortgeschritten wird.
  • Falls der alte, mnemonische Code x die zu der Konstanten in Bezug gesetzte Operation im Schritt S54 ist, erfasst die Konstantenänderungseinheit 50 Konstantenteilungsinformationen z, deren Teilkonstantenbenutzungsoperations-Adresseninformationen 606 eine Adresse d des alten, mnemonischen Codes x von den Fehlersuchinformationen anzeigen (Schritt S57). Die Konstantenänderungseinheit 50 beurteilt, ob die Konstantenteilungsinformationen z existieren (Schritt S58).
  • Falls die Konstantenteilungsinformationen z existieren, werden die Konstante des neuen, mnemonischen Codes y in die Konstantenteilungsinformationen z als neue Konstantenwertinformationen 602 hineingeschrieben (Schritt S60). Die Konstantenänderungseinheit 50 nimmt dann auf die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 Bezug, um Adressen von zu Konstanten in Bezug gesetzten Operationen zu finden, die sich auf dieselbe Langwortkonstante wie der alte, mnemonische Code x beziehen. Die Konstantenänderungseinheit 50 teilt auch die Konstante des neuen, mnemonischen Codes y an der Bitposition, dargestellt in den Konstantenteilungsbitpositionsinformationen 604 (Schritt S61). Die erzeugten Teilkonstanten werden dann jeweils in die Adressen, dargestellt durch die Teilkonstantenbenutzungsoperations-Adresseninformationen 606, als die neuen Konstanten-Operanden hineingeschrieben.
  • Wenn andererseits die Konstantenteilungsinformationen z nicht im Schritt S58 existieren, schreitet die Verarbeitung zu den Schritten S36–S44 fort, dargestellt in 10B. Die Schritte S36–S44 in 10B sind dieselben wie die Schritte S36–S74, dargestellt in
  • 9, wo die Konstantenteilungsinformationen z durch Erfassen von zu Konstanten in Bezug gesetzten Operationen erzeugt werden. Die erzeugten Konstantenteilungsinformationen z werden dann in den Schritten S60 und S61 verwendet, bevor die Verarbeitung abgeschlossen wird.
  • Die 8A–8E stellen ein spezifisches Beispiel des Prozesses eines Umschreibens von Ausführungscoden durch die Konstantenänderungseinheit 50 gemäß eines Fehlersuchbefehls, eingegeben durch den Programmierer, dar. Der Code „0014>" in 8A stellt eine Anforderung zum Eingeben des 14. Fehlersuchbefehls dar. Hierbei gibt der Programmierer einen Ausführungscodeänderungsbefehl „A" als den Fehlersuchbefehl und eine Änderungszieladresse 0x80000000 ein.
  • Die Arbeitsumgebung liest den Ausführungscode „08123456", gespeichert in der Adresse 0x8000000, von dem Speicher (Schritt S71). Nach der Rückumwandlung wird der mnemonische Code „SFST24 0x12345678, 8, $" auf der Anzeige 11 zusammen mit dem Symbol „?" zum Anfordern, einen neuen, mnemonischen Code einzugeben, angezeigt, wie in 8B dargestellt ist (Schritt S72). Wenn der Programmierer einen mnemonischen Code „SFST24 0x87654321, 8, $" eingibt, wie dies in 8C dargestellt ist, erfasst die Konstantenänderungseinheit 50 Konstantenteilungsinformationen entsprechend zu dem alten, mnemonischen Code „SFST24 0x12345678, 8, $" in der Fehlersuchinformationsspeichereinheit 42 (Schritt 57). Die Konstantenänderungseinheit 50 schreibt dann die Konstante „0x87654321" des neuen, mnemonischen Codes „SFST24 0x87654321, 8, $" in die erfassten Konstantendivisionsinformationen als die neuen Konstantenwertinformationen 602 hinein (Schritt S60).
  • Die Konstantenänderungseinheit 50 nimmt auf die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 Bezug, um Adressen von zu Konstanten in Bezug gesetzte Operationen zu finden, die sich auf die Langwortkonstante 0x12345678" beziehen, wie dies auch bei dem alten, mnemonischen Code „SFST24 0x12345678, 8, $" der Fall ist. In 6 stellen die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 Adressen 0x8000000 und 0x8000004 dar.
  • Die Konstantenänderungseinheit 50 teilt dann die neue Langwortkonstante „0x87654321" an der 8. Bitposition entsprechend den Konstantendivisionsbitpositionsinformationen 604. Die erzeugten Teilkonstanten „0x876543" und „0x21" werden jeweils in die Adresse 0x8000000 und 0x80000004 als die neuen Konstanten-Operanden hinein geschrieben (Schritt S61).
  • Hierbei werden die Ausführungscode „08123456" und „67280500" in Adressen 0x80000000 und 0x80000004 jeweils gegen Ausführungscode „08876543" und „62210500" ersetzt, wie dies in 8D dargestellt ist.
  • Beim Abschluss der Ausführungscodeänderung in der Adresse 0x80000000 wird eine Änderungssolladresse d erhöht (Schritt S74). Die Arbeitsumgebung liest den Ausführungscode „62210500" von der Adresse 0x80000004 (Schritt S71) und die Ausführungscoderückumwandlungseinheit 47 wandelt den Ausführungscode zu einem mnemonischen Code „MOV 0x21, R0" zurück. Die Konstantenwiederherstellungseinheit 49 erfasst die Konstantenteilungsinformationen 807 für den mnemonischen Code „MOV 0x21, R0" in der Fehlersuchinformationsspeichereinheit 42 und ersetzt die Teilkonstante „0x21" gegen die neue Langwortkonstante „0x87654321 ", dargestellt in den Konstantenwertinformationen 602. Als Ergebnis wird ein mnemonischen Code „MOV 0x87654321, R0", dargestellt in 8E, für den Ausführungscode, gespeichert in der Adresse 0x80000004, angezeigt.
  • Der Fall, wenn der Programmierer das Änderungsziel nicht durch die Tasteneingabe, sondern unter Verwendung der Cursortasten oder der Mouse 38, spezifiziert, wird nachfolgend erläutert.
  • Zum Beispiel spezifiziert, auf der Anzeige 11, die die Rückumwandlungsergebnisse „SFST24 0x12345678, 8, $" bis „ST R0, (_b)", dargestellt in 7F, anzeigt, der Programmierer eine zu einer Konstanten in Bezug gesetzte Operation, die die Konstante „0x12345678" umfasst, als das Änderungsziel, unter Verwendung der Cursortasten oder der Mouse 38. Die Grafikbenutzerschnittstelle 45 lässt die Konstantenänderungseinheit 50 die Konstantenteilungsinformationen 807 für die Konstante „0x12345678" von der Fehlersuchinformationsspeichereinheit 42 lesen und nimmt auf die Konstantenteilungsbitpositioneninformationen 604, die Teilkonstantenbitlängeninformationen 605 und die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 Bezug, um die anderen, zu einer Konstanten in Bezug gesetzten Operationen zu spezifizieren, die sich auf die Konstante „0x12345678" beziehen. Wenn der Programmierer die zu der Konstanten in Bezug gesetzte Operation „SFST24 0x12345678, 8, $" auf der Anzeige 11, zum Beispiel, spezifiziert, spezifiziert die Konstantenänderungseinheit 50 die zu der Konstanten in Bezug gesetzte Operation „MOV 0x12345678, R0" als sich auf dieselbe Konstante „0x12345678" beziehend. Die Konstantenänderungseinheit 50 schreibt dann die zwei zu Konstanten in Bezug gesetzten Operationen in derselben Art und Weise, wie dies vorstehend angegeben ist, um.
  • Innerer Aufbau der Programmkompiliervorrichtung
  • Das Nachfolgende ist eine Erläuterung der Programmkompiliervorrichtung unter Bezugnahme auf die 11–17.
  • 11 stellt den funktionalen Aufbau der Programmkompiliervorrichtung 81 dar. Ein Programmarbeitsbereich 82 ist aus Dateiverzeichnissen (directories), geschrieben in dem Festplattenlaufwerk 13, aufgebaut, und speichert das Quellenprogramm, eingegeben unter Verwendung von Texteditoren in dem Host Computer 10. Der Programmarbeitsbereich 82 wird auch zum Erzeugen des Fehlersuchsollprogramms und der Fehlersuchinformation verwendet.
  • 12A stellt ein Beispiel des Quellenprogramms, gespeichert in dem Programmarbeitsbereich 82, dar.
  • Das beispielhafte Programm in 12A ist aus einer Angabe einer Zuordnung einer hexadezimalen Zahl „0x12345678" zu einer globalen Variablen a und einer Angabe einer multiplizierenden, globalen Variablen a mit 2, Addieren des Werts „4" zu dem Multiplikationsergebnis und Zuordnen des Additionsergebnisses zu einer globalen Variablen b, aufgebaut. Die globalen Variablen a und b werden als Identifizierer _a und _b ausgedrückt. Es ist anzumerken, dass die Grammatikprüfung bereits an dem Quellenprogramm durchgeführt worden ist.
  • Eine Programmumwandlungseinheit 83 wandelt das Quellenprogramm, gespeichert in dem Programmarbeitsbereich 82, zu einem Zwischenbeschreibungsprogramm um. Zum Beispiel wandelt, wenn Variablen a und b, geschrieben in dem Quellenprogramm in 12A, als Register R0 und R1 spezifiziert sind, die Programmumwandlungseinheit 83 das Quellenprogramm zu einem Zwischenbeschreibungsprogramm, dargestellt in 12B, um. Jede Angabe in der Figur besitzt die folgende Bedeutung.
  • „_DATA SECTION DATA": Pseudo-Instruktion, die einen Start von Daten darstellt. „GLOBAL _a": Pseudo-Instruktion, die darstellt, dass die Variable a eine globale Variable ist.
  • „DS 4": Pseudo-Instruktion zum Sichern eines Bereichs für die Variable a.
  • GLOBAL _b": Pseudo-Instruktion, die darstellt, dass die Variable b eine globale Variable ist.
  • „DS 4": Pseudo-Instruktion zum Sichern eines Bereichs für die Variable b.
  • „_TEXT SECTION TEXT": Pseudo-Instruktion, die einen Start von Ausführungscoden darstellt.
  • „MOV 0x12345678, R0": Instruktion zum Zuordnen einer Konstanten „0x12345678" zu einem Register R0.
  • „ST R0, (_a)": Instruktion zum Speichern des Werts des Registers R0 in einer Adresse, spezifiziert durch eine Variable a.
  • „ADD R0, R0": Instruktion zum Addieren des Werts des Registers R0 und des Werts des Registers R0 und Zuordnen des Additionsergebnisses zu dem Register R0.
  • „ADD 4, R0": Instruktion zum Addieren einer Konstanten „4" zu dem Wert des Registers R0 und zum Zuordnen des Additionsergebnisses zu dem Register R0.
  • „ST R0, (_b)": Instruktion zum Speichern des Werts des Registers R0 in eine Adresse, spezifiziert durch eine Variable b.
  • In dieser Stufe sind die Konstanten, umfasst in den Instruktionen „MOV 0x12345678, R0", „ST R0, (_a)", und „ST R0, (_b)", bis jetzt noch nicht dividiert worden. Der Konstanten-Operand „4" in der Instruktion „ADD 4, R0" ist nicht dividiert, und zwar aufgrund der kurzen Länge.
  • Eine Konstantenteilungseinheit 84 erfasst jede Instruktion, die eine Langwortkonstante in dem Zwischenbeschreibungsprogramm umfasst, und ändert die Instruktion zu einer Operationssequenz, die aus (k-1) Teilkonstantenverschiebungs- und Speicheroperationen und einer gespeicherten Konstantennutzungsoperation zusammengesetzt ist, wobei jede Operation eine von k Teilkonstanten, erhalten durch Dividieren der Langwortkonstanten, umfasst. In der gespeicherten Konstantenbenutzungsoperation ist der Operationscode derselbe wie der Operationscode in der Instruktion, während die Langwortkonstante in der Instruktion gegen den Teilkonstanten-Operanden, ein anderer als die (k-1) Teilkonstanten in den Teilkonstantenverschiebungs- und Speicheroperationen, ersetzt worden ist.
  • Es ist anzumerken, dass die Konstantenteilungsbitposition und die Teilkonstantenzahl variieren, wenn eine Langwortkonstante dividiert wird.
  • 12C stellt ein Ergebnis einer Teilung jeder 32-Bit-Konstanten in dem Zwischenbeschreibungsprogramm, dargestellt in 12B, in eine 24-Bit-Teilkonstante und eine 8-Bit Teilkonstante dar. Wie in den Figuren dargestellt ist, wird die Instruktion „MOV 0x12345678, R0" gegen Operationen „SFST24 0x123456, 8, $" und „MOV 0x78, R0" ersetzt. Die Instruktion „ST R0, (_a)" wird gegen Operationen „SFST24 a, 8, $" und „ST R0, (_a)" ersetzt. Die Instruktion „ST R0, (_b)" wird gegen Operationen „SFST24 b, 8, $" und „ST R0, (_b)" ersetzt.
  • Es sollte angemerkt werden, dass die Konstantenteilungsbitposition und die Teilkonstantenzahl, die hier verwendet sind, nicht festgelegt sind, und demzufolge könnten sie zu dem Zeitpunkt geändert werden, zu dem die Ausführungscode erzeugt werden. Die Bedeutung jeder Operation nach der Konstantenteilung wird nachfolgend erläutert.
  • „SFST24 0x123456, 8, $": Speichere die 24 Bits hoher Ordnung der Konstanten „0x12345678" in das Konstantenregister 76 hinein.
  • „MOV 0x78, R0": Kombiniere die 8 Bits niedriger Ordnung der Konstanten „0x12345678" mit der Teilkonstanten, gespeichert in dem Konstantenregister 76, und Ordne die Kombination dem Register R0 zu.
  • „SFST24 _a, 8, $": Speichere die 24 Bits hoher Ordnung der Variablen a in das Konstantenregister 76 hinein.
  • „ST R0, (_a)": Speichere den Wert des Registers R0 in einer Adresse, spezifiziert durch eine Variable a.
  • SFST24 _b, 8, $": Speichere die 24 Bits hoher Ordnung der Variablen b in das Konstantenregister 76 hinein.
  • ST R0, (_b)": Speichere den Wert des Registers R0 in einer Adresse, spezifiziert durch eine Variable b.
  • In 12C besitzen die Operationen „MOV 0x78, R0", „ST R0, (_a)", „ADD R0, R0", „ADD 4, R0" und „ST R0, (_b)" 12 Bits oder weniger. Allerdings kann keine davon parallel ausgeführt werden, entweder aus dem Grund, dass eine angrenzende Operation länger als 12 Bits ist, oder da die angrenzende Operation einen Zugang zu derselben Ressource erfordert.
  • Eine Fehlersuchinformationsausgabeeinheit 85 beurteilt, ob der Programmierer eine Fehlersuchinformationserzeugungsoption bei dem Start der Programmkompiliervorrichtung 81 spezifiziert hat. Falls der Programmierer die Fehlersuchinformationserzeugungs option spezifiziert hat, überwacht die Fehlersuchinformationsausgabeeinheit 85 die Programmkompilierungsverarbeitung der Programmumwandlungseinheit 83, der Konstantendivisionseinheit 84, einer Programmoptimierungseinheit 87 und einer Ausführungscodeausgabeeinheit 88, und erzeugt Fehlersuchinformationen in dem Programmarbeitsbereich 82 durch Schreiben von Parametern, unter allen Parametern, erzeugt in der Kompilierungsverarbeitung, die sich auf die Fehlersuchverarbeitung beziehen, und zwar in ein vorbestimmtes Format hinein. Die Erzeugung der Fehlersuchinformationen, die nicht Konstantenteilungsinformationen umfassen, können durch herkömmliche Programmkompiliervorrichtungen durchgeführt werden, und die vorliegende Erfindung enthält nicht irgendeine neue Offenbarung, die sich hierauf bezieht. Dementsprechend wird die Verarbeitung einer Erzeugung der Fehlersuchinformationen, die nicht die Konstantenteilungsinformationen umfassen, durch die Fehlersuchinformationsausgabeeinheit 85, nicht hier im Detail erläutert. Allerdings werden, da die Erzeugung der Konstantenteilungsinformationen die Hauptmerkmale der vorliegenden Erfindung bilden, die Komponenten, die sich auf eine solche Erzeugung beziehen (Konstantenteilungsinformationserzeugungseinheit 86 und Konstantenteilungsinformationsmodifikationseinheit 89) im Detail nachfolgend erläutert.
  • Die Konstantenteilungsinformationserzeugungseinheit 86 erzeugt Konstantenteilungsinformationen für jede Langwortkonstante, die durch die Konstantenteilungseinheit 84 geteilt ist.
  • 13 zeigt ein Flussdiagramm, das die Erzeugung der Konstantenteilungsinformationen darstellt. In der Figur spezifiziert eine Variable k die „k"-te Konstante (nachfolgend Konstante k) von L Bits in dem Quellenprogramm. Eine Variable q spezifiziert eine Bitposition in der Konstante k, während eine Variable j eine von Operationen, umfasst in einer Instruktionssequenz, spezifiziert. Wenn eine Operation j einen Konstanten-Operanden umfasst, spezifiziert eine Variable r eine Bitlänge des Konstanten-Operanden. Die 14A und 14B stellen Beispiele von Operationen und eine Langwortkonstante, geschrieben unter Verwendung der vorstehenden Variablen, dar.
  • In den Beispielen stellen „imm1, imm2, ..., immx" dar, dass eine Langwortkonstante in eine gegebenen Zahl von Teilkonstanten angegebenen Bitpositionen unterteilt ist. Die gegebene Zahl von Teilkonstanten wird jeweils in einer der Operationen 1–10 (j = 1 bis j = 10) als ein Operand verwendet. Die Variable q stellt eine Bitposition dar, an der jede Teilkonstante startet, während die Variable r eine Bitlänge jeder Teilkonstanten darstellt.
  • In 13 setzt die Konstantenteilungsinformationserzeugungseinheit 86 sowohl die Variable k als auch die Variable j bei 1 ein (Schritt S1) und sucht eine Konstante k der Bitlänge L von dem Quellenprogramm wieder auf (Schritt S2). Die Konstantenteilungsinformationserzeugungseinheit 86 erzeugt einen Mustervorschlag von Konstantenteilungsinformationen k für die Konstante k (Schritt S3) und schreitet dann zu Schritt S4 fort, wo eine Variable q auf 1 gesetzt wird.
  • Die Konstantenteilungsinformationserzeugungseinheit 86 sucht eine Operation j von der Instruktionssequenz auf (Schritt S5) und beurteilt, ob eine Operation j eine Operation „SFST(r) imm, q, q + r" ist (Schritt S6). Hierbei ist die Operation „SFST(r) imm, q, q + r" eine Teilkonstantenverschiebungs- und Speicheroperation, die eine r-Bit-Teilkonstante (1 ≦ r ≦ L) verwendet, beginnend von dem „q"-ten Bit einer Konstanten k. Falls die Operation j die Teilkonstantenverschiebungs- und Speicheroperation ist, dann schreibt die Konstantenteilungsinformationserzeugungseinheit 86 eine Konstante k in die Konstantenwertinformationen 602 in Konstantenteilungsinformationen k hinein (Schritt S7) und schreibt eine Adresse einer Operation j in die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 in Konstantenteilungsinformationen k hinein (Schritt S8). Die Konstantenteilungsinformationserzeugungseinheit 86 beurteilt, ob q (Bit-Position) + r (Bit-Länge) = L (Bit-Länge einer Konstanten k) gilt (Schritt S9). Falls q + r ≠⁣ L, wird die Variable q auf „q + r" gesetzt und die Variable j wird erhöht (Schritt S10), bevor zu Schritt S5 zurückgegangen wird.
  • Die Konstantenteilungsinformationserzeugungseinheit 86 sucht wieder eine Operation j von der Instruktionssequenz auf (Schritt S5) und beurteilt, ob die Operation j eine Operation „SFST(r) imm, q, q + r" ist (Schritt S6). Wenn zwei aufeinanderfolgende Teilkonstantenverschiebungs- und Speicheroperationen in der Instruktionsequenz existieren, schreitet die Verarbeitung zu den Schritten S7–S8 fort.
  • Wenn andererseits die Operation j nicht eine Teilkonstantenverschiebungs- und Speicheroperation ist, beurteilt die Konstantenteilungsinformationserzeugungseinheit 86, ob die Operation j eine gespeicherte Konstantennutzungsoperation ist, die eine r-Bit-Teilkonstante als einen Operanden umfasst (Schritt S17). Falls dies der Fall ist, wird eine Adresse einer Operation j in die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 hinein in die Konstantenteilungsinformationen k geschrieben (Schritt S18). Die Konstantenteilungsinformationserzeugungseinheit 86 füllt auch die Kon stanteteilungsbitpositionsinformationen 604 und die Teilkonstantenbitlängeninformationen 605 basierend auf einer Bitposition q und einer Bitlänge r (Schritt S19) und schreitet zu Schritt S9 fort.
  • Falls im Schritt S17 eine Operation j nicht die gespeicherte Konstantenbenutzungsoperation ist, wird eine Variable j erhöht (Schritt S20), bevor zu dem Schritt S5 zurückgekehrt wird.
  • Wenn q + r = L im Schritt S9 gilt, beurteilt die Konstantenteilungsinformationserzeugungseinheit 86, ob eine Variable k die gesamte Zahl n der Langwortkonstanten, geschrieben in dem Quellenprogramm, anpasst (Schritt S15). Wenn sie nicht zueinander passen, wird die Variable k erhöht (Schritt S16), und die Verarbeitung kehrt zu Schritt S2 zurück. Als ein Ergebnis der vorstehenden Verarbeitung werden Konstantenteilungsinformationen für jede Langwortkonstante in dem Programmarbeitsbereich 82 erzeugt.
  • Die 15A–15C stellen Konstantenteilungsinformationen, erzeugt für die Langwortkonstanten, umfasst in dem Zwischenbeschreibungsprogramm, dargestellt in 12C, dar.
  • 15A stellt Konstantenteilungsinformationen für die Konstante „0x12345678" dar. In der Figur stellen die Konstantentypinformationen 601 dar, dass die Konstante als eine Zahl ausgedrückt ist, die Konstantenwertinformationen 602 stellen den originalen Konstantenwert „0x12345678" dar und die Teilkonstantenzahlinformationen 603 stellen dar, dass die Konstante in zwei Konstanten unterteilt worden ist. Die Konstantenteilungsbitpositionsinformationen 604 stellen dar, dass die Konstante an dem achten Bit unterteilt worden ist, und die Teilkonstantenbitlängeninformationen 605 stellen dar, dass die zwei Teilkonstanten 24 Bits und 8 Bits sind. Die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 stellen relative Adressen 0x0000.0 und 0x0004.0 der Operationen „SFST24 0x123456, 8, $" und „MOV 0x78, R0" dar, dargestellt in 12C.
  • 15B stellt Konstantenteilungsinformationen für einen Identifizierer _a dar. In der Fig. stellen die Konstantentypinformationen 601 dar, dass die Konstante als ein Identifizierer ausgedrückt ist, die Konstantenwertinformationen 602 stellen einen Identifizierer _a als den originalen Konstantenwert dar, und die Teilkonstantenzahlinformationen 603 stellen dar, dass die Konstante in zwei Konstanten unterteilt worden ist. Die Konstantenteilungsbitpositionsinformationen 604 stellen dar, dass die Konstante an dem achten Bit unterteilt worden ist, und die Teilkonstantenbitlängeninformationen 605 stellen dar, dass die zwei Teilkonstanten 24 Bits und 8 Bits sind. Die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 stellen relative Adressen 0x0008.0 und 0x000C.0 der Operationen „SFST24 _a, 8, $" und „ST R0, (_a)" dar, dargestellt in 12C.
  • 15C stellt Konstantenteilungsinformationen für einen Identifizierer _b dar. In der Fig. stellen die Konstantentypinformationen 601 dar, dass die Konstante als ein Identifizierer ausgedrückt wird, die Konstantenwertinformationen 602 stellen einen Identifizierer _b als den originalen Konstantenwert dar, und die Teilkonstantenzahlinformationen 603 stellen dar, dass die Konstante in zwei Konstanten unterteilt worden ist. Die Konstantenteilungsbitpositionsinformationen 604 stellen dar, dass die Konstante an dem achten Bit unterteilt worden ist, und die Teilkonstantenbitlängeninformationen 605 stellen dar, dass die zwei Teilkonstanten 24 Bits und 8 Bits sind. Die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 stellen relative Adressen 0x0018.0 und 0x001C.0 der Operationen „SFST24 b, 8, $" und „ST R0, (_b)", dar, dargestellt in 12C.
  • Die Programmoptimierungseinheit 87 optimiert das Zwischenbeschreibungsprogramm durch Ändern der Ausführungsreihenfolge von Operationen und durch Löschen unnötiger Operationen: Indem dies so vorgenommen wird, erzeugt die Programmoptimierungseinheit 87 parallele Assemblercode, in denen optimierte Assemblerinstruktionen hineingepackt sind. Hierbei ist der parallele Assemblercode ein Assemblercode, der durch einen VLIW Prozessor verarbeitet werden soll, und umfasst seriell und parallel angeordnete Assembler-Instruktionen, die jeweils eine Mehrzahl von parallel ausführbaren Operationen spezifizieren.
  • Die vorstehende Verarbeitung durch die Programmoptimierungseinheit 87 ist besonders effektiv dann, wenn Langwortkonstanten unterteilt werden. Die Optimierung, die sich auf die Konstantenteilung bezieht, kann in die folgenden Typen klassifiziert werden.
  • Der erste Typ dient dazu, das Konstantenteilungsmuster zu ändern, wie beispielsweise durch Dividieren einer Konstanten, die in 24 Bits unterteilt worden ist, und 8 Bits in 12 Bits, 12 Bits und 8 Bits, oder durch Teilen einer Konstanten, die in 12 Bits, 12 Bits, und 8 Bits in 24 Bits, und 8 Bits unterteilt worden ist.
  • Der zweite Typ ist derjenige, die Konstantenteilungsbitposition, wie beispielsweise durch Teilen einer Teilkonstanten, die in 24 Bits und 8 Bits in 8 Bits und 24 Bits unterteilt worden ist, zu ändern.
  • Der dritte Typ dient dazu, die Ausführungsreihenfolge zwischen zu einer Konstanten in Bezug gesetzten Operationen und anderer Operationen umzuschalten, um so Konflikte an den Bussen zu vermeiden. Diese verschiedenen Typen werden separat oder zusammen zum Optimieren des Zwischenbeschreibungsprogramms eingesetzt.
  • Zusätzlich optimiert, wenn eine Bitlänge eine Adresse als Folge einer Absolutadressenzuordnung geändert wird, die Programmoptimierungseinheit 87 das Programm entsprechend der Änderung.
  • Spezifische Beispiele der Optimierung werden nachfolgend erläutert.
  • 12D stellt ein Ergebnis einer Optimierung des Zwischenbeschreibungsprogramms, dargestellt in 12C, dar. In der Fig. wird die Operation „SFST24 _b, 8, $" in 12C in Operationen „SFST12 _b, 20, $" und „SFST12 _b, 8, 20" unterteilt, darstellend, dass die Programmoptimierungseinheit 87 das Konstantenteilungsmuster von „24 + 8" zu „12+12+8" geändert hat. Als Folge werden die Operationen „SFST12 _b, 20, $" und „ADD R0, R0" in eine Instruktion hineingepackt, während die Operationen „SFST12 _b, 8, 20" und „ADD 4, R0" in die andere Instruktion hineingepackt werden.
  • Demzufolge können die vorstehenden zwei Sätze von Operationen jeweils parallel als Folge einer Unterteilung der Langwortkonstanten in kleinere Konstanten und Umordnen der Operationen ausgeführt werden.
  • Die Ausführungscodeausgabeeinheit 88 wandelt die parallelen Assemblercode, ausgegeben von der Programmoptimierungseinheit 87, in versetzbare Objektcode um, die durch den VLIW Prozessor ausgeführt werden kann, und in Umordnungsinformationen zum Darstellen von Label, verwendet für die Objektcode, Operationsadressen entsprechend zu den Label und jede Label-Größe.
  • Die Ausführungscodeausgabeeinheit 88 verknüpft dann die versetzbaren Objektcode in eine Sequenz hinein, ebenso wie sie eine Endadresse für jedes Label berechnet und jede Label-Größe bestimmt. Zum Beispiel fügt, wenn eine absolute Adresse 0x80000000 den Ausführungscoden, dargestellt in 12D, zugeordnet wird, die Ausführungscodeausgabeeinheit 88 die absolute Adresse zu jeder Offset-Adresse hinzu.
  • Es wird angenommen, dass Adressen 0x80000000 und 0x00001000 jeweils dem Codebereich und dem Datenbereich zugeordnet werden, während Adressen 0x0000 und 0x0004 Variablen a und b in dem Datenbereich zugeordnet werden. Das Adressenzuordnungsergebnis ist in 12E dargestellt.
  • Die Ausführungscodesequenz, die absoluten Adressen so zugeordnet worden ist, wie dies vorstehend angegeben ist, wird in jeden Speicher der Simulator-Software 17, des ROM-Emulators 20 und der ICE-Karte 30 ebenso als das ausführbare Fehlersuchsollprogramm 24 gespeichert werden. Die Fehlersuchinformationen, die die Konstantenteilungsinformationen umfassen, werden in die Fehlersuchinformationsspeichereinheit 42 hineingespeichert. Der vorstehenden Kompilierungsverarbeitung folgend führt die Fehlersuchhilfsvorrichtung eine Fehlersuche in Bezug auf das Fehlersuchsollprogramm 24 durch.
  • Die Konstantenteilungsinformationsmodifikationseinheit 89 erneuert eine relative Adresse jeder Operation in dem Zwischenbeschreibungsprogramm entsprechend den Änderungen der relativen Adresse nach der Optimierung durch die Programmoptimierungseinheit 87 und berechnet jede Ladeadresse von der erneuerten, relativen Adresse und der Programmadresse, die durch die Ausführungscodeausgabeeinheit 88 zugeordnet ist, wobei die Ladeadresse dann in die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 in den Konstantenteilungsinformationen 807 hineingeschrieben werden.
  • Demzufolge werden die Konstantenteilungsinformationen 807 so modifiziert, um mit den Inhalten des Fehlersuchsollprogramms 24 in Abhängigkeit der Optimierung des Programms durch die Programmoptimierungseinheit 87 übereinzustimmen, wie beispielsweise durch Umanordnen/Löschen der Operationen.
  • Die 16A–16C stellen Beispiele von Konstantenteilungsinformationen dar, die in Abhängigkeit der Optimierung modifiziert worden sind. Die 16A und 16B stellen die Konstantenteilungsinformationen für die Konstanten „0x12345678" und „_a" dar, die nicht modifiziert sind.
  • 16C stellt die modifizierten Konstantenteilungsinformationen für die Konstante „_b" dar. In der Fig. werden die Teilkonstantenzahlinformationen 603 von „2" zu „3" geändert, während die Konstantenteilungsbitpositionsinformationen 604 von „8" zu „8, 20" hin geändert werden. Die Teilkonstantenbitlängeninformationen 605 werden von „24, 8" zu „12, 12, 8" geändert, das neue Konstantenteilungsmuster „12 + 12 + 8" darstellend. Die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 stellen relative Adressen 0x0010.0, 0x0014.1 und 0x0018.1 jeweils für die Operationen „SFST12 _b, 20, $", „SFST12 _b, 8, 20" und „ST R0, (_b)" dar, gezeigt in 12D, anstelle von vorherigen Adressen 0x0008.0 und 0x000C.0.
  • Die 17A–17C stellen Beispiele von Konstantenteilungsinformationen dar, die entsprechend der absoluten Adressenzuordnung durch die Ausführungscodeausgabeeinheit 88 modifiziert worden sind.
  • Die 17A stellt die modifizierten Konstantenteilungsinformationen für die Konstante „0x12345678" dar. In der Fig. werden die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 zu Adressen 0x8000000.0 und 0x8000004.0 als ein Ergebnis eines Addierens der absoluten Adresse 0x8000000 zu jeder der relativen Adressen 0x0000.0 und 0x0004.0 geändert.
  • 17B stellt die modifizierten Konstantenteilungsinformationen für einen Identifizierer _a dar. In der Fig. werden die Konstantenwertinformationen 602 von „_a" zu „0x00001000" geändert, während die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 von den relativen Adressen 0x0008.0 und 0x000C.0 zu absoluten Adressen 0x80000008.0 und 0x8000000C.0 geändert werden.
  • 17C stellt die modifizierten Konstantenteilungsinformationen für den Identifizierer _b dar. In der Fig. werden die Konstantenwertinformationen 602 von „_b" zu „0x00001004" geändert, während die Teilkonstantenbenutzungsoperations-Adresseninformationen 606 von den relativen Adressen 0x0010.0, 0x0014.1 und 0x0018.1 zu absoluten Adressen 0x80000010.0, 0x80000014.1 und 0x80000018.1 geändert werden.
  • Mit der vorstehenden Ausführungsform kann ein mnemonischer Code ohne die originale Konstante anstelle der Teilkonstanten unter Verwendung der Konstantenwiederherstellungsfunktion der Fehlersuchhilfsvorrichtung angezeigt werden. Dementsprechend kann der Programmierer leicht die Programminhalte verstehen. Auch kann, wenn die Konstantenteilungsinformationen nicht in der Programmkompiliervorrichtung erzeugt werden, die Fehlersuchhilfsvorrichtung die originale Konstante unter Verwendung von Ausführungshistorie-Informationen und angrenzenden Ausführungscoden wieder herstellen. Demzufolge ist es möglich, die originale Konstante in den Fehlersuchsollprogrammen, erzeugt durch herkömmliche Programmkompiliervorrichtungen, wiederherzustellen. Insbesondere kann die korrekte, originale Konstante unter Verwendung der Ausführungshistorie-Informationen wieder hergestellt werden, gerade wenn eine Verzweigungsinstruktion in zu Konstanten in Bezug gesetzten Operationen für die originale Konstante umfasst sind. Auch kann, durch Erzeugen von Konstantenteilungsinformationen in der Fehlersuchstufe, die originale Konstante unter einer hohen Geschwindigkeit zum nächsten Zeitpunkt wieder hergestellt werden. Auch können die Ausführungshistorie-Informationen gelöscht werden, wenn einmal die Konstantenteilungsinformationen erzeugt sind.
  • Auch kann mit der Konstantenwiederherstellungsfunktion der Fehlersuchhilfsvorrichtung der Programmierer einfach Ausführungscode ändern, ohne zu wissen; dass die originale Konstante in Teilkonstanten unterteilt worden ist.
  • Während Verschiebe- und Speicheroperationen als die auf die Konstante in Bezug gesetzten Operationen in der vorliegenden Ausführungsform verwendet werden, können Verzweigungsoperationen auch verwendet werden.
  • Während die originale Konstante in zwei aufeinanderfolgende Adressen in der vorliegenden Ausführungsform unterteilt ist, kann sie auch in drei oder mehr Adressen unterteilt werden, die nicht aufeinanderfolgend sind.
  • Während die Fehlersuche durch Eingeben des Fehlersuchbefehls oder unter Verwendung der Hinweisvorrichtung, wie beispielsweise der Mouse in der vorliegenden Ausführungsform, ausgeführt wird, können andere Eingabevorrichtungen, wie beispielsweise ein Trackball, eine Berührungstafel und ein Lichtstift, anstelle davon verwendet werden.
  • Während eine Gruppe von zu Konstanten in Bezug gesetzte Operationen, die sich auf dieselbe Konstante beziehen farblich auf der Anzeige codiert sind, um sie von anderen Operationen in der vorliegenden Ausführungsform zu unterscheiden, kann ein unterschiedliches Anzeigeverfahren verwendet werden, wie beispielsweise Anzeigen in einem eindeutigen Zeichenbild, Hinzufügen eines eindeutigen Symbols, oder Unterstreichung.
  • Obwohl die vorliegenden Erfindung vollständig anhand von Beispielen unter Bezugnahme auf die beigefügten Zeichnungen beschrieben worden ist, sollte angemerkt werden, dass verschiedene Änderungen und Modifikationen Fachleuten auf dem betreffenden Fachgebiet ersichtlich werden. Deshalb sollten, ohne dass solche Änderungen und Modifikationen außerhalb des Schutzumfangs der vorliegenden Erfindung liegen, sie als darin eingeschlossen angesehen werden.

Claims (30)

  1. Testhilfevorrichtung zur Unterstützung beim Testen einer Ausführungscodesequenz, die in einen Speicher geladen ist, die umfasst: eine Empfangseinrichtung, die eine Angabe einer Test-Zieladresse von einem Benutzer empfängt; eine Umwandlungseinrichtung, die einen Operationscode in einem Ausführungscode, der in der Test-Zieladresse in den Speicher geladen ist, in einen mnemonischen Code umwandelt; eine Feststelleinrichtung, die, wenn der Ausführungscode einen Konstantenoperanden enthält, feststellt, ob der Konstantenoperand eine Teilkonstante ist, die bestimmt wird, indem eine Langwortkonstante geteilt wird; eine Wiederherstellungseinrichtung, die die Langwortkonstante aus dem Konstantenoperanden wiederherstellt, wenn es sich bei dem Konstantenoperanden um die Teilkonstante handelt; und eine Anzeigeeinrichtung, die den mnemonischen Code mit der Langwortkonstante anzeigt.
  2. Testhilfevorrichtung nach Anspruch 1, die des Weiteren umfasst: eine Konstantenteilungsinformations-Speichereinrichtung, die eine Vielzahl von Sätzen von Konstantenteilungsinformationen speichert, die erzeugt wurden, wenn eine Quellencodesequenz in die Ausführungscodesequenz kompiliert wurde, wobei jeder Satz von Konstantenteilungsinformationen eine einer Vielzahl von Langwortkonstanten, die in die Quellencodesequenz geschrieben sind, sowie eine Vielzahl von Teilkonstanten zeigt, die bestimmt werden, indem die Langwortkonstante geteilt wird, wobei die Feststelleinrichtung enthält: eine erste Erfassungseinrichtung, die aus der Konstantenteilungsinformations-Speichereinrichtung einen Satz von Konstantenteilungsinformationen erfasst, der die Teilkonstante anzeigt, die mit dem Konstantenoperanden übereinstimmt, der in dem Ausführungscode enthalten ist, und wobei die Wiederherstellungseinrichtung die Langwortkonstante wiederherstellt, indem sie die Langwortkonstante aus dem erfassten Satz von Konstantenteilungsinformationen liest.
  3. Testhilfevorrichtung nach Anspruch 2, wobei jeder Satz von Konstantenteilungsinformationen Bitpositionsinformationen enthält, die eine Position und eine Länge jeder der Vielzahl von Teilkonstanten in der Langwortkonstante zeigen, wobei die erste Erfassungseinheit eine Vielzahl von Teilkonstanten aus jeder Langwortkonstante entsprechend den Bitpositionsinformationen rückgewinnt, die in jedem Satz von Konstantenteilungsinformationen enthalten sind, und feststellt, ob der Konstantenoperand mit einer der Vielzahl rückgewonnener Teilkonstanten übereinstimmt, und wobei die Wiederherstellungseinrichtung die Langwortkonstante wiederherstellt, indem sie die Langwortkonstante aus dem Satz von Konstantenteilungsinformationen liest, wenn der Konstantenoperand mit einer der Vielzahl rückgewonnener Teilkonstanten übereinstimmt.
  4. Testhilfevorrichtung nach Anspruch 3, wobei jeder Satz von Konstantenteilungsinformationen eine Ladeadresse jedes Ausführungscodes zeigt, der eine der Vielzahl von Teilkonstanten enthält, wenn die Ladeadresse bekannt ist, wobei die Feststelleinrichtung enthält: eine zweite Erfassungseinheit, die, wenn wenigstens zwei Sätze von Konstantenteilungsinformationen vorhanden sind, die jeweils die Teilkonstante zeigen, die mit dem Konstantenoperanden übereinstimmt, einen Satz von Konstantenteilungsinformationen aus den Sätzen von Konstantenteilungsinformationen erfasst, der eine Ladeadresse zeigt, die mit der Test-Zieladresse übereinstimmt, und wobei, wenn die zweite Erfassungseinheit den Satz von Konstantenteilungsinformationen erfasst, die Wiederherstellungseinrichtung die Langwortkonstante wiederherstellt, indem sie die Langwortkonstante aus dem erfassten Satz von Konstantenteilungsinformationen liest.
  5. Testhilfevorrichtung nach Anspruch 4, wobei die Empfangseinrichtung enthält: eine Änderungsbefehl-Empfangseinheit, die einen Befehl zum Ändern einer Langwortkonstante in dem Speicher sowie eine neue Langwortkonstante von dem Benutzer empfängt, und wobei die Testhilfevorrichtung des Weiteren umfasst: eine Teilungseinrichtung, die die neue Langwortkonstante entsprechend der Bitpositionsinformation in einem Satz von Konstantenteilungsinformationen, der die zu ändernde Langwortkonstante zeigt, in eine Vielzahl neuer Teilkonstanten teilt; und eine Schreibeinrichtung, die jede der Vielzahl neuer Teilkonstanten in eine entsprechende Ladeadresse schreibt, die in dem Satz von Konstantenteilungsinformationen gezeigt wird.
  6. Testhilfevorrichtung nach Anspruch 2, wobei jeder Satz von Konstantenteilungsinformationen Typinformationen enthält, die zeigen, ob die Langwortkonstante als eine Zahl oder eine Kennung ausgedrückt ist, die die Langwortkonstante in der Quellencodesequenz identifiziert und entsprechend den Typinformationen die Zahl oder die Kennung zeigt, und wobei die Anzeigeeinrichtung enthält: eine Feststelleinrichtung, die, wenn es sich bei dem Konstantenoperanden um die Teilkonstante handelt, unter Bezugnahme auf die Typinformationen in dem Satz von Konstantenteilungsinformationen, der die Teilkonstante zeigt, feststellt, ob die Langwortkonstante als eine Zahl oder eine Kennung in der Quellencodesequenz ausgedrückt ist; eine erste Anzeigeeinheit, die die Kennung anzeigt, die in dem Satz von Konstantenteilungsinformationen gezeigt wird, wenn die Langwortkonstante als die Kennung ausgedrückt ist; und eine zweite Anzeigeeinheit, die die Zahl anzeigt, die in der Gruppe von Konstantenkennungsinformationen gezeigt wird, wenn die Langwortkonstante als die Zahl ausgedrückt ist.
  7. Testhilfevorrichtung nach Anspruch 2, wobei die Empfangseinrichtung enthält: eine Listenbefehl-Empfangseinheit, die einen Listenanzeigebefehl sowie eine Angabe eines Listenanzeige-Adressenbereiches von dem Benutzer empfängt, wobei die Umwandlungseinrichtung eine Vielzahl von Operationscodes in einer Vielzahl von Ausführungscodes, die in den Listenanzeige-Adressenbereich in dem Speicher geladen sind, in eine Vielzahl mnemonischer Codes umwandelt, wobei die Feststelleinrichtung für Ausführungscodes von der Vielzahl von Ausführungscodes, die jeweils einen Konstantenoperanden enthalten, feststellt, ob es sich bei dem Konstantenoperanden um eine Teilkonstante handelt, die bestimmt wird, indem eine Langwortkonstante geteilt wird, wobei die Wiederherstellungseinrichtung den Konstantenoperanden, bei dem es sich um die Teilkonstante handelt, durch die Langwortkonstante ersetzt, und wobei von der Vielzahl mnemonischer Codes die Anzeigeeinrichtung mnemonische Codes anzeigt, die den Ausführungscodes entsprechen, in denen der Konstantenoperand durch die Langwortkonstante auf andere Weise als bei anderen mnemonischen Codes ersetzt wird.
  8. Testhilfevorrichtung nach Anspruch 1, wobei die Wiederherstellungseinrichtung enthält: eine Bitlängen-Berechnungseinheit, die eine Differenz-Bitlänge berechnet, indem sie eine Bitlänge des Konstantenoperanden, der in dem Ausführungscode enthalten ist, von einer Standard-Bitlänge der Langwortkonstante subtrahiert; eine Ausführungscode-Erfassungseinheit, die wenigstens einen Konstantenoperanden, der eine Bitlänge hat, die nicht größer ist als die Differenz-Bitlänge, anhand von Adressen an die Test-Zieladresse angrenzend erfasst; und eine Anordnungseinheit, die den erfassten Konstantenoperanden und den Konstantenoperanden, der in der Test-Zieladresse enthalten ist, anordnet, um die Langwortkonstante wiederherzustellen.
  9. 9. Testhilfevorrichtung nach Anspruch 8, wobei die Anordnungseinheit enthält: eine erste Anordnungseinheit, die, wenn ein Konstantenoperand, der eine Bitlänge hat, die der Differenz-Bitlänge gleich ist, erfasst wird, den erfassten Konstantenoperanden und den Konstantenoperanden, der in der Test-Zieladresse enthalten ist, anordnet, um die Langwortkonstante wiederherzustellen; und eine zweite Anordnungseinheit, die, wenn wenigstens zwei Konstantenoperanden, die jeweils eine Bitlänge haben, die geringer ist als die Differenz-Bitlänge und die eine Gesamt-Bitlänge haben, die der Differenz-Bitlänge gleich ist, erfasst werden, die erfassten Konstantenoperanden und den Konstantenoperanden, der in der Test-Zieladresse enthalten ist, anordnen, um die Langwortkonstante wiederherzustellen, und wobei die Anzeigeeinrichtung den mnemonischen Code mit der Langwortkonstante von der ersten Anordnungseinheit oder der zweiten Anordnungseinheit wiederhergestellt wird, anzeigt.
  10. Testhilfevorrichtung nach Anspruch 9, die des weiteren umfasst: eine Ausführungsverlauf-Speichereinrichtung, die, wenn wenigstens ein Ausführungscode, der in dem Speicher geladen ist, ausgeführt worden ist, Adressen des ausgeführten Ausführungscodes speichert, wobei, wenn kein Ausführungscode ausgeführt worden ist, die Ausführungscode-Erfassungseinheit den Konstantenoperanden anhand der Adressen an die Test-Zieladresse angrenzend erfasst, und wobei, wenn wenigstens ein Ausführungscode ausgeführt worden ist, die Ausführungscode-Erfassungseinheit den Konstantenoperanden anhand der Adressen, die in der Ausführungsverlauf-Speichereinrichtung gespeichert sind, und anhand der Adressen an die Test-Zieladresse angrenzend erfasst.
  11. Testhilfevorrichtung nach Anspruch 10, die des weiteren umfasst: eine Konstantenteilungsinformations-Speichereinrichtung, die eine Vielzahl von Sätzen von Konstantenteilungsinformationen speichert, wobei jeder Satz von Konstantenteilungsinformationen zeigt: eine einer Vielzahl von Langwortkonstanten, die in eine Quellencodesequenz geschrieben sind, die in die Ausführungscodesequenz kompiliert worden ist; Teilkonstanteninformationen, die eine Vielzahl von Teilkonstanten zeigen, die bestimmt werden, indem die Langwortkonstante geteilt wird, und eine Ladeadresse jedes Ausführungscodes, der eine der Vielzahl von Teilkonstanten enthält, wenn die Ladeadresse bekannt ist; und eine Konstantenteilungsinformations-Erzeugungseinrichtung, die, wenn die Langwortkonstante durch die Anordnungseinheit wiederhergestellt wird, einen Satz von Konstantenteilungsinformationen erzeugt, indem sie die wiederhergestellte Langwortkonstante als eine ursprüngliche Langwortkonstante schreibt, den erfassten Konstantenoperanden und den Konstantenoperanden, der in der Test-Zieladresse enthalten ist, als die Teilkonstanteninformationen schreibt, und die Test-Zieladresse sowie eine Adresse des erfassten Konstantenoperanden als Ladeadressen schreibt, wobei der erzeugte Satz von Konstantenteilungsinformationen in die Konstantenteilungsinformations-Speichereinrichtung gespeichert wird.
  12. Testhilfevorrichtung nach Anspruch 1, wobei die Ausführungscodesequenz, die in den Speicher geladen ist, Operationssequenzen enthält, wobei jede Operationssequenz aus wenigstens einer Konstanten-Speicheroperation und einer Konstanten-Nutzungsoperation besteht, wobei ein Prozessor, der der Testhilfevorrichtung entspricht, enthält: eine Leseeinrichtung, die eine Operation, die in jeder der Operationssequenzen enthalten ist, aus dem Speicher liest; eine Analyseeinrichtung, die analysiert, ob es sich bei der Leseoperation um eine Konstanten-Speicheroperation oder eine Konstanten-Nutzungsoperation handelt; ein Konstantenregister, das Teilkonstanten speichert; eine Speichereinrichtung, die, wenn es sich bei der Leseoperation um die Konstanten-Speicheroperation handelt und wenn keine Teilkonstante in dem Konstantenregister gespeichert ist, eine Teilkonstante, die in der Operation enthalten ist, in das Konstantenregister speichert, und, wenn es sich bei der Leseoperation um die Konstanten-Speicheroperation handelt und wenn das Konstantenregister wenigstens eine Teilkonstante speichert, die Teilkonstante, die in der Operation enthalten ist, in das Konstantenregister speichert; und eine Ausführeinrichtung, die, wenn es sich bei der Leseoperation um die Konstanten-Nutzungsoperation handelt, alle Teilkonstanten liest, die in dem Konstantenregister gespeichert sind, und die Operation unter Nutzung der gelesenen Teilkonstanten als Operanden ausführt.
  13. Testhilfevorrichtung nach Anspruch 12, wobei es sich bei dem Prozessor um einen VLIW-Prozessor handelt, der parallel eine Vielzahl von Operationen ausführt, die in einer Instruktion enthalten sind.
  14. Programmkompiliervorrichtung, die umfasst: eine Empfangseinrichtung, die einen Befehl zum Kompilieren einer Quellencodesequenz von einem Benutzer empfängt; eine Kompilationseinrichtung, die die Quellencodesequenz in eine Ausführungscodesequenz kompiliert, wenn der Befehl zum Kompilieren der Quellencodesequenz empfangen wird, wobei von allen Befehlen, die in die Quellencodesequenz geschrieben sind, jeder Befehl, der eine Langwortkonstante enthält, durch eine Operationssequenz in der Ausführungscodesequenz ersetzt wird, wobei die Operationssequenz aus einer Vielzahl von Operationen besteht, die jeweils eine Vielzahl von Teilkonstanten enthalten, die bestimmt werden, indem die Langwortkonstante geteilt wird; eine Feststelleinrichtung, die feststellt, ob der Befehl zum Kompilieren der Quellencodesequenz von einer Testoptions-Angabe begleitet wird; und eine Erzeugungseinrichtung, die Konstantenteilungsinformationen, die die Langwortkonstante angeben, unter Verwendung der Vielzahl von Teilkonstanten erzeugt, wenn die Testoptions-Angabe begleitet.
  15. Programmkompiliervorrichtung nach Anspruch 14, wobei die Konstantenteilungsinformationen eine Ladeadressen-Spalte enthalten, die eine Ladeadresse jeder der Vielzahl von Operationen zeigen, die jeweils die Vielzahl von Teilkonstanten enthalten, wobei die Kompilationseinrichtung enthält: eine Ersetzeinrichtung, die jeden Befehl, der die Langwortkonstante enthält, durch die Operationssequenz ersetzt, die aus der Vielzahl von Operationen besteht; eine Optimierungseinheit, die die Quellencodesequenz optimiert, in der jeder Befehl durch die Operationssequenz ersetzt worden ist; und eine Zuordnungseinheit, die eine Ladeadresse in einem Zielrechner jeder der Vielzahl von Operationen in der optimierten Quellencodesequenz zuordnet, und wobei die Erzeugungseinrichtung enthält: eine Schreibeinheit, die, nachdem jeder Befehl durch die Operationssequenz ersetzt ist, eine relative Adresse jeder Operation, die in der Operationssequenz enthalten ist, berechnet und die relative Adresse in die Ladeadressen-Spalte in den Konstantenteilungsinformationen schreibt; und eine Erneuerungseinheit, die die relative Adresse entsprechend einer Änderung der relativen Adresse als ein Ergebnis einer Optimierung durch die Optimierungseinheit erneuert, eine Ladeadresse aus der erneuerten relativen Adresse und der zugeordneten Ladeadresse berechnet und die berechnete Ladeadresse in die Ladeadressen-Spalte in den Konstantenteilungsinformationen schreibt.
  16. Programmkompiliervorrichtung nach Anspruch 14, wobei die Langwortkonstante als eine Zahl oder eine Kennung ausgedrückt ist, die die Langwortkonstante in der Quellencodesequenz identifiziert, wobei die Konstantenteilungsinformationen eine Konstantentyp-Spalte enthalten, die zeigt, ob die Langwortkonstante als die Zahl oder die Kennung ausgedrückt ist, wobei, wenn die Langwortkonstante als die Kennung ausgedrückt ist, der Langwortkonstante eine Zahl zugeordnet wird, wenn eine Ladeadresse in einem Zielrechner jeder der Vielzahl von Operationen zugeordnet ist, und wobei die Erzeugungseinrichtung enthält: eine erste Erfassungseinheit, die, wenn die Langwortkonstante als die Kennung ausgedrückt ist, die Langwortkonstante aus der Quellencodesequenz erfasst, die erfasste Langwortkonstante in die Konstanteilungsinformationen schreibt und Informationen, dass die Langwortkonstante als die Kennung ausgedrückt ist, in die Konstantentyp-Spalte in den Konstantenteilungsinformationen schreibt; eine zweite Erfassungseinheit, die, wenn die Langwortkonstante als die Zahl ausgedrückt ist; die Langwortkonstante aus der Quellencodesequenz erfasst, die erfasste Langwortkonstante in die Konstantenteilungsinformationen schreibt und Informationen, dass die Langwortkonstante als die Zahl ausgedrückt ist, in die Konstantentyp-Spalte in den Konstantenteilungsinformationen schreibt; und eine Schreibeinheit, die, wenn die Zahl der Langwortkonstante zugeordnet ist, die als die Kennung ausgedrückt ist, die zugeordnete Zahl in die Konstantenteilungsinformationen schreibt.
  17. Computerlesbares Speichermedium, das ein Testprogramm zur Unterstützung beim Testen einer Ausführungscodesequenz, die in einen Speicher geladen ist, speichert, wobei das Testprogramm umfasst: einen Empfangsschritt des Empfangens einer Angabe einer Test-Zieladresse von einem Benutzer; einen Umwandlungsschritt des Umwandelns eines Operationscodes in einen Ausführungscode, der in der Test-Zieladresse in dem Speicher geladen ist, in einen mnemonischen Code; einen Feststellschritt des Feststellens, ob es sich bei der Konstantenoperanden um eine Teilkonstante handelt, die bestimmt wird, indem eine Langwortkonstante geteilt wird, wenn der Ausführungscode einen Konstantenoperanden enthält; einen Wiederherstellungsschritt des Wiederherstellens der Langwortkonstante aus dem Konstantenoperanden, wenn es sich bei dem Konstantenoperanden um die Teilkonstante handelt; und einen Anzeigeschritt des Anzeigens des mnemonischen Codes mit der Langwortkonstante.
  18. Speichermedium nach Anspruch 17, das enthält: einen Konstantenteilungsinformations-Speicherbereich, der eine Vielzahl von Sätzen von Konstantenteilungsinformationen speichert, die erzeugt wurden, wenn eine Quellencodesequenz in die Ausführungscodesequenz kompiliert wurde; wobei jeder Satz von Konstantenteilungsinformationen eine einer Vielzahl von Langwortkonstanten, die in die Quellencodesequenz geschrieben sind, sowie eine Vielzahl von Teilkonstanten zeigt, die ermittelt werden, indem die Langwortkonstante geteilt wird, wobei der Feststellschritt einschließt: einen ersten Erfassungs-Teilschritt des Erfassens eines Satzes von Konstanteninformationen, der die Teilkonstante zeigt, die mit dem Konstantenoperanden übereinstimmt, der in dem Ausführungscode enthalten ist, aus dem Konstantenteilungsinformations-Speicherbereich, und wobei in dem Wiederherstellungsschritt die Langwortkonstante wiederhergestellt wird, indem die Langwortkonstante aus dem erfassten Satz von Konstantenteilungsinformationen gelesen wird.
  19. Speichermedium nach Anspruch 18, wobei jeder Satz von Konstantenteilungsinformationen Bitpositionsinformationen enthält, die eine Position und eine Länge jeder der Vielzahl von Teilkonstanten in der Langwortkonstante zeigen, wobei in dem ersten Ertassungs-Teilschritt eine Vielzahl von Teilkonstanten aus jeder Langwortkonstante entsprechend der Bitpositionsinformationen rückgewonnen werden, die in jedem Satz von Konstantenteilungsinformationen enthalten sind, und festgestellt wird, ob der Konstantenoperand mit einer der Vielzahl rückgewonnener Teilkonstanten übereinstimmt, und wobei in dem Wiederherstellungsschritt die Langwortkonstante wiederhergestellt wird, indem die Langwortkonstante aus dem Satz von Konstantenteilungsinformationen gelesen wird, wenn der Konstantenoperand mit einer der Vielzahl rückgewonnener Teilkonstanten übereinstimmt.
  20. Speichermedium nach Anspruch 19, wobei jeder Satz von Konstantenteilungsinformationen eine Ladeadresse jedes Ausführungscodes zeigt, der eine der Vielzahl von Teilkonstanten enthält, wenn die Ladeadresse bekannt ist, wobei der Feststellschritt einschließt: einen zweiten Erfassungs-Teilschritt des Erfassens eines Satzes von Konstantenteilungsinformationen aus den Sätzen von Konstantenteilungsinformationen, der eine Ladeadresse zeigt, die mit der Test-Zieladresse übereinstimmt, wenn wenigstens zwei Sätze von Konstantenteilungsinformationen vorhanden sind, die jeweils die Teilkonstante zeigen, die mit dem Konstantenoperanden übereinstimmt, und wobei, wenn in dem zweiten Ertassungs-Teilschritt der Satz von Konstantenteilungsinformationen erfasst wird, in dem Wiederherstellungsschritt die Langwortkonstante wiederhergestellt wird, indem die Langwortkonstante aus dem erfassten Satz von Konstantenteilungsinformationen gelesen wird.
  21. Speichermedium nach Anspruch 20, wobei der Empfangsschritt einschließt: einen Änderungsbefehlempfangs-Teilschritt des Empfangens eines Befehls zum Ändern einer Langwortkonstante in dem Speicher sowie einer neuen Langwortkonstante von dem Benutzer, und wobei das Testprogramm des Weiteren umfasst: einen Teilungsschritt des Teilens der neuen Langwortkonstante in eine Vielzahl neuer Teilkonstanten entsprechend den Bitpositionsinformationen in einem Satz von Konstantenteilungsinformationen, der die zu ändernde Langwortkonstante zeigt; und einen Schreibschritt des Schreibens jeder der Vielzahl neuer Teilkonstanten in eine entsprechende Ladeadresse, die in den Konstantenteilungsinformationen gezeigt wird.
  22. Speichermedium nach Anspruch 18, wobei jeder Satz von Konstantenteilungsinformationen Typinformationen enthält, die zeigen, ob die Langwortkonstante als eine Zahl oder eine Kennung ausgedrückt ist, die die Langwortkonstante in der Quellencodesequenz identifiziert und entsprechend den Typinformationen die Zahl oder die Kennung zeigt, und wobei der Anzeigeschritt einschließt: einen Feststell-Teilschritt des Feststellens, ob die Langwortkonstante als eine Zahl oder eine Kennung in der Quellencodesequenz ausgedrückt ist, unter Bezugnahme auf die Typinformationen in dem Satz von Konstantenteilungsinformationen, der die Teilkonstante zeigt, wenn es sich bei dem Konstantenoperanden um die Teilkonstante handelt; einen ersten Anzeige-Teilschritt des Anzeigens der Kennung, die in dem Satz von Konstantenteilungsinformationen gezeigt wird, wenn die Langwortkonstante als die Kennung ausgedrückt ist; und einen zweiten Anzeige-Teilschritt des Anzeigens der Zahl, die in dem Satz von Konstantenteilungsinformationen gezeigt wird, wenn die Langwortkonstante als die Zahl ausgedrückt ist.
  23. Speichermedium nach Anspruch 18, wobei der Empfangsschritt einschließt: einen Listenbefehlempfangs-Teilschritt des Empfangens eines Listenanzeigebefehls und einer Angabe eines Listenanzeige-Adressenbereiches von dem Benutzer, wobei in dem Umwandlungsschritt eine Vielzahl von Operationscodes in einer Vielzahl von Ausführungscodes, die in dem Listenanzeige-Adressenbereich in dem Speicher geladen sind, in eine Vielzahl mnemonischer Codes umgewandelt wird, wobei in dem Feststellschritt für Ausführungscodes von der Vielzahl von Ausführungscodes, die jeweils einen Konstantenoperanden enthalten, festgestellt wird, ob es sich bei dem Konstantenoperanden um eine Teilkonstante handelt, die bestimmt wird, indem eine Langwortkonstante geteilt wird, wobei in dem Wiederherstellungsschritt der Konstantenoperand, bei dem es sich um die Teilkonstante handelt, durch die Langwortkonstante ersetzt wird, und wobei aus der Vielzahl mnemonischer Codes in dem Anzeigeschritt mnemonische Codes angezeigt werden, die den Ausführungscodes entsprechen, in denen der Konstantenoperand durch die Langwortkonstante auf andere Weise als bei anderen mnemonischen Codes ersetzt wird.
  24. Speichermedium nach Anspruch 17, wobei der Wiederherstellungsschritt enthält: einen Bitlängenberechnungs-Teilschritt des Berechnens einer Differenz-Bitlänge durch Subtrahieren einer Bitlänge des Konstantenoperanden, der in dem Ausführungscode enthalten ist, von einer Standard-Bitlänge der Langwortkonstante; einen Ausführungscodeertassungs-Teilschritt des Erfassens wenigstens eines Konstantenoperanden, der eine Bitlänge hat, die nicht größer ist als die Differenz-Bitlänge, anhand von Adressen an die Test-Zieladresse angrenzend; und einen Anordnungs-Teilschritt des Anordnens des erfassten Konstantenoperanden und des Konstantenoperanden, der in der Test-Zieladresse enthalten ist, um die Langwortkonstante wiederherzustellen.
  25. Speichermedium nach Anspruch 24, wobei der Anordnungs-Teilschritt einschließt: einen ersten Anordnungs-Teilschritt des Anordnens des erfassten Konstantenoperanden und des Konstantenoperanden, der in der Test-Zieladresse enthalten ist, um die Langwortkonstante wiederherzustellen, wenn ein Konstantenoperand erfasst wird, der eine Bitlänge hat, die der Differenz-Bitlänge gleich ist; und einen zweiten Anordnungs-Teilschritt des Anordnens der erfassten Konstantenoperanden und des Konstantenoperanden, der in der Test-Zieladresse enthalten ist, um die Langwortkonstante wiederherzustellen, wenn wenigstens zwei Konstantenoperanden erfasst werden, die jeweils eine Bitlänge haben, die geringer ist als die Differenz-Bitlänge und die eine Gesamt-Bitlänge haben, die der Differenz-Bitlänge gleich ist, und wobei in dem Anzeigeschritt der mnemonische Code mit der Langwortkonstante, die in dem ersten Anordnungs-Teilschritt oder dem zweiten Anordnungs-Teilschritt wiederhergestellt wird, angezeigt wird.
  26. Speichermedium nach Anspruch 25, wobei, wenn kein Ausführungscode in der Ausführungscodesequenz ausgeführt worden ist, in dem Ausführungscodeerfassungs-Teilschritt der Konstantenoperand anhand der Adressen an die Test-Zieladresse angrenzend erfasst wird, und wobei, wenn wenigstens ein Ausführungscode ausgeführt worden ist, in dem Ausführungscodeertassungs-Teilschritt der Konstantenoperand anhand von Adressen der Ausführungscodes, die ausgeführt worden sind, und anhand von Adressen an die Test-Zieladresse angrenzend erfasst wird.
  27. Speichermedium nach Anspruch 26, das des Weiteren enthält: einen Konstantenteilungsinformations-Speicherbereich, der eine Vielzahl von Sätzen von Konstantenteilungsinformationen speichert, wobei jeder Satz von Konstantenteilungsinformationen zeigt: eine einer Vielzahl von Langwortkonstanten, die in eine Quellencodesequenz geschrieben sind, die in die Ausführungscodesequenz kompiliert worden ist; Teilkonstanteninformationen, die eine Vielzahl von Teilkonstanten zeigen, die bestimmt werden, indem die Langwort konstante geteilt wird, wenn die Quellencodesequenz in die Ausführungscodesequenz kompiliert worden ist; und eine Ladeadresse jedes Ausführungscodes, der eine der Vielzahl von Teilkonstanten enthält, wenn die Ladeadresse bekannt ist, wobei das Testprogramm des Weiteren umfasst: einen Konstantenteilungsinformationserzeugungs-Teilschritt des Erzeugens eines Satzes von Konstantenteilungsinformationen, indem die wiederhergestellte Langwortkonstante als eine ursprüngliche Langwortkonstante geschrieben wird, der erfasste Konstantenoperand und der Konstantenoperand, der in der Test-Zieladresse enthalten ist, als die Teilkonstanteninformationen geschrieben werden und die Test-Zieladresse sowie eine Adresse des erfassten Konstantenoperanden als Ladeadresse geschrieben werden, wenn die Langwortkonstante in dem Anordnungsschritt wiederhergestellt wird, und wobei der erzeugte Satz von Konstantenteilungsinformationen in dem Konstantenteilungsinformations-Speicherbereich gespeichert wird.
  28. Computerlesbares Speichermedium, das ein Programm-Kompilierprogramm speichert, wobei das Programm-Kompilierprogramm umfasst: einen Empfangsschritt des Empfangens eines Befehls zum Kompilieren einer Quellencodesequenz von einem Benutzer; einen Kompilationsschritt des Kompilierens der Quellencodesequenz in eine Ausführungscodesequenz, wenn der Befehl zum Kompilieren der Quellencodesequenz empfangen wird, wobei von allen Befehlen, die in die Quellencodesequenz geschrieben sind, jeder Befehl, der eine Langwortkonstante enthält, durch eine Operationssequenz in der Ausführungscodesequenz ersetzt wird, wobei die Operationssequenz aus einer Vielzahl von Operationen besteht, die jeweils eine Vielzahl von Teilkonstanten enthalten, die bestimmt werden, indem die Langwortkonstante geteilt wird; einen Feststellschritt des Feststellens, ob eine Testoptions-Angabe den Befehl zum Kompilieren der Quellencodesequenz begleitet, und einen Erzeugungsschritt des Erzeugens von Konstantenteilungsinformationen, die die Langwortkonstante angeben, unter Verwendung der Vielzahl von Teilkonstanten, wenn die Testoptions-Angabe begleitet.
  29. Speichermedium nach Anspruch 28, wobei die Konstantenteilungsinformationen eine Ladeadressen-Spalte enthalten, die eine Ladeadresse jeder der Vielzahl von Operationen anzeigt, die jeweils die Vielzahl von Teilkonstanten enthalten, wobei der Operationsschritt einschließt: einen Ersetz-Teilschritt des Ersetzens jedes Befehls, der die Langwortkonstante enthält, durch die Operationssequenz, die aus der Vielzahl von Operationen besteht; einen Optimierungs-Teilschritt des Optimierens der Quellencodesequenz, in der jeder Befehl durch die Operationssequenz ersetzt worden ist; und einen Zuordnungs-Teilschritt des Zuordnens einer Ladeadresse in einem Zielrechner zu jeder der Vielzahl von Operationen in der optimierten Quellencodesequenz, und wobei der Erzeugungsschritt einschließt: einen Schreib-Teilschritt des Berechnens einer relativen Adresse jeder Operation, die in der Operationssequenz enthalten ist, und des Schreibens der relativen Adresse in die Ladeadressen-Spalte in den Konstantenteilungsinformationen, nachdem jeder Befehl durch die Operationssequenz ersetzt ist; und einen Erneuerungs-Teilschritt des Erneuerns der relativen Adresse entsprechend einer Änderung der relativen Adresse als Ergebnis einer Optimierung in dem Optimierungs-Teilschritt, des Berechnens einer Ladeadresse aus der erneuerten relativen Adresse und der zugeordneten Ladeadresse und des Schreibens der berechneten Ladeadresse in die Ladeadressen-Spalte in den Konstantenteilungsinformationen.
  30. Speichermedium nach Anspruch 28, wobei die Langwortkonstante als eine Zahl oder eine Kennung ausgedrückt wird, die die Langwortkonstante in der Quellencodesequenz identifiziert, wobei die Konstantenteilungsinformationen eine Konstantentyp-Spalte enthalten, die zeigt, ob die Langwortkonstante als die Zahl oder die Kennung ausgedrückt ist, wobei, wenn die Langwortkonstante als die Kennung ausgedrückt ist, der Langwortkonstante eine Zahl zugeordnet wird, wenn eine Ladeadresse in einem Zielrechner jeder der Vielzahl von Operationen zugeordnet ist, und wobei der Erzeugungsschritt einschließt: einen ersten Ertassungs-Teilschritt des Erfassens der Langwortkonstante aus der Quellencodesequenz, des Schreibens der erfassten Langwortkonstante in die Konstantenteilungsinformationen und des Schreibens von Informationen, dass die Langwortkonstante als die Kennung ausgedrückt wird, in die Konstantentyp-Spalte in den Konstantenteilungsinformationen, wenn die Langwortkonstante als die Kennung ausgedrückt ist; einen zweiten Erfassungs-Teilschritt des Erfassens der Langwortkonstante aus der Quellencodesequenz, des Schreibens der erfassten Langwortkonstante in die Konstantenteilungsinformationen und des Schreibens von Informationen, dass die Langwortkonstante als die Zahl ausgedrückt ist, in die Konstantentyp-Spalte in den Konstantenteilungsinformationen, wenn die Langwortkonstante als die Zahl ausgedrückt ist; und einen Schreib-Teilschritt des Schreibens der zugeordneten Zahl in die Konstantenteilungsinformationen, wenn die Zahl der Langwortkonstante zugeordnet ist, die als die Kennung ausgedrückt ist.
DE69816381T 1997-08-29 1998-08-28 Vorrichtung zur Unterstützung von Fehlersuche in symbolische Programme und entsprechender Kompiler. Expired - Fee Related DE69816381T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP23435597 1997-08-29
JP23435597A JP3424520B2 (ja) 1997-08-29 1997-08-29 プログラム変換装置とデバッグ装置

Publications (2)

Publication Number Publication Date
DE69816381D1 DE69816381D1 (de) 2003-08-21
DE69816381T2 true DE69816381T2 (de) 2004-02-12

Family

ID=16969711

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69816381T Expired - Fee Related DE69816381T2 (de) 1997-08-29 1998-08-28 Vorrichtung zur Unterstützung von Fehlersuche in symbolische Programme und entsprechender Kompiler.

Country Status (5)

Country Link
US (1) US6141791A (de)
EP (1) EP0899661B1 (de)
JP (1) JP3424520B2 (de)
KR (1) KR100537258B1 (de)
DE (1) DE69816381T2 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3424520B2 (ja) * 1997-08-29 2003-07-07 松下電器産業株式会社 プログラム変換装置とデバッグ装置
US6314557B1 (en) * 1998-12-14 2001-11-06 Infineon Technologies Development Center Tel Aviv Ltd Hybrid computer programming environment
JP3699354B2 (ja) * 1998-12-22 2005-09-28 富士通株式会社 最適化オブジェクト生成装置及び方法
JP3488161B2 (ja) * 2000-01-31 2004-01-19 Necエレクトロニクス株式会社 プログラム開発装置、プログラム開発方法及びプログラム開発プログラムを記録した記録媒体
JP2002091762A (ja) * 2000-09-14 2002-03-29 Denso Corp プログラム生成装置
US7086033B2 (en) * 2002-04-25 2006-08-01 International Business Machines Corporation Software debugger having a monitor for monitoring conditional statements within a software program
US20040030963A1 (en) * 2002-08-12 2004-02-12 Sun Microsystems, Inc., A Delaware Corporation Method and apparatus for debugging computer program
JP2004152279A (ja) * 2002-10-08 2004-05-27 Matsushita Electric Ind Co Ltd プログラム更新方法および端末装置
US7613961B2 (en) * 2003-10-14 2009-11-03 Hewlett-Packard Development Company, L.P. CPU register diagnostic testing
US7343588B2 (en) * 2004-01-30 2008-03-11 International Business Machines Corporation Method of generating and utilizing debug history
US8407206B2 (en) * 2005-05-16 2013-03-26 Microsoft Corporation Storing results related to requests for software development services
JP2006338421A (ja) * 2005-06-03 2006-12-14 Fujitsu Ltd リモートデータベース操作プログラム、リモートデータベース操作方法、およびリモートデータベース操作装置
JP2006350686A (ja) * 2005-06-16 2006-12-28 Seiko Epson Corp 命令セット・シミュレータ生成装置及びシミュレータ生成方法
US20070226702A1 (en) * 2006-03-22 2007-09-27 Rolf Segger Method for operating a microcontroller in a test environment
US20130179863A1 (en) * 2012-01-11 2013-07-11 Microsoft Corporation Bug variant detection using program analysis and pattern identification
US9129063B2 (en) * 2013-05-14 2015-09-08 Oracle International Corporation Visualizing a computer program execution history
US8997060B2 (en) 2013-07-31 2015-03-31 International Business Machines Corporation Parallel program analysis and branch prediction
US9436450B2 (en) * 2014-09-01 2016-09-06 Freescale Semiconductor, Inc. Method and apparatus for optimising computer program code
JP6559600B2 (ja) * 2016-03-17 2019-08-14 株式会社東芝 情報処理装置、情報処理プログラムおよび検査システム
CN108198124B (zh) * 2017-12-27 2023-04-25 上海联影医疗科技股份有限公司 医学图像处理方法、装置、计算机设备和存储介质
CN112948271A (zh) * 2021-04-09 2021-06-11 腾讯科技(深圳)有限公司 一种代码测试方法、装置、设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4694420A (en) * 1982-09-13 1987-09-15 Tektronix, Inc. Inverse assembly method and apparatus
US5287548A (en) * 1988-02-29 1994-02-15 Allen-Bradley Company, Inc. Programmable controller having a stored program with both machine language instructions and source code data
DE59108210D1 (de) * 1991-07-31 1996-10-24 Siemens Ag Verfahren zur Visualisierung von protokollierten Informationen in einem Kommunikationssystem
US5555419A (en) * 1993-01-06 1996-09-10 Digital Equipment Corporation Correlation system
JP3546980B2 (ja) * 1996-03-29 2004-07-28 松下電器産業株式会社 データ処理装置
JP3424520B2 (ja) * 1997-08-29 2003-07-07 松下電器産業株式会社 プログラム変換装置とデバッグ装置

Also Published As

Publication number Publication date
JPH1173326A (ja) 1999-03-16
US6141791A (en) 2000-10-31
DE69816381D1 (de) 2003-08-21
JP3424520B2 (ja) 2003-07-07
EP0899661B1 (de) 2003-07-16
EP0899661A1 (de) 1999-03-03
KR19990024035A (ko) 1999-03-25
KR100537258B1 (ko) 2006-02-28

Similar Documents

Publication Publication Date Title
DE69816381T2 (de) Vorrichtung zur Unterstützung von Fehlersuche in symbolische Programme und entsprechender Kompiler.
DE69720821T2 (de) Fehlersuchsystem für Programme mit einer graphischen Benutzerschnittstelle
DE60010420T2 (de) Automatisches Regressionstesten von Arbeitsplatz-Software
DE60130840T2 (de) Vorrichtung und Verfahren zur Katalogisierung von symbolischen Daten zur Verwendung bei der Leistungsanalyse von Computerprogrammen
US20080320054A1 (en) Database and Software Conversion System and Method
EP0689694A1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
US5862382A (en) Program analysis system and program analysis method
DE19534752A1 (de) Verfahren und System zum Liefern einer Unterstützung für eine spekulative Ausführung
DE03012184T1 (de) Prozessor, Informationsverarbeitungsgerät, Kompiliervorrichtung, und Kompilierverfahren mittels dieses Prozessors
CN104516765A (zh) 计算机和编译方法
DE102004017050A1 (de) Datenkonsistenz in Datenverarbeitungsanlagen
WO2009010338A1 (de) Verfahren zur rechnergestützten obfuskierung eines softwareprogramms und computerprogrammprodukt
DE10393511T5 (de) Programmentwicklungsunterstützungsvorrichtung, Programmausführungsvorrichtung, Kompilierverfahren und Diagnoseverfahren
EP0817049B1 (de) Programmentwicklungssystem
Choppy et al. Use of patterns in formal development: Systematic transition from problems to architectural designs
DE10300541A1 (de) Erzeugen einer ausführbaren Datei
Minör et al. Using mjølner orm as a structure-based meta environment
JPH08234997A (ja) レジスタ割付け方法
JP2662533B2 (ja) ロジック・アナライザ
EP0560342B1 (de) Verfahren zum Untersuchen des Ablaufs eines in einer Hardware-Beschreibungssprache geschriebenen Programms
Boral The PLC Learner
DE10329147A1 (de) Verknüpfung und Darstellung von Signalen einer Vorrichtung zur Hardware-Simulation und Elementen eines Listings eines Programms
DE60030189T2 (de) Befehlsübersetzungsverfahren
DE102004014885B4 (de) Verfahren zur Optimierung eines Programms eines tragbaren Datenträgers
DE19549468C2 (de) Compiler

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee