DE69429305T2 - System und Verfahren für Sprachenverarbeitung - Google Patents

System und Verfahren für Sprachenverarbeitung

Info

Publication number
DE69429305T2
DE69429305T2 DE69429305T DE69429305T DE69429305T2 DE 69429305 T2 DE69429305 T2 DE 69429305T2 DE 69429305 T DE69429305 T DE 69429305T DE 69429305 T DE69429305 T DE 69429305T DE 69429305 T2 DE69429305 T2 DE 69429305T2
Authority
DE
Germany
Prior art keywords
register
code
intermediate code
information
instruction
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
DE69429305T
Other languages
English (en)
Other versions
DE69429305D1 (de
Inventor
Harumi Mizuse
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.)
NEC Electronics Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Publication of DE69429305D1 publication Critical patent/DE69429305D1/de
Application granted granted Critical
Publication of DE69429305T2 publication Critical patent/DE69429305T2/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
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Description

  • Die vorliegende Erfindung betrifft allgemein ein System für Spracheninformationsverarbeitung sowie ein Sprachenverarbeitungsverfahren. Insbesondere betrifft die Erfindung ein System und Verfahren für Sprachenverarbeitung, das für die Codeverarbeitung in einer höheren Sprache als Programmiersprache für einen Mikrocomputer eingesetzt werden kann.
  • Allgemein gibt es als Programmiersprachen für Mikrocomputer die Assemblersprache, die bei ausreichender Kenntnis der Hardware-Konfiguration des Mikrocomputers auf maschinensprachlicher (befehlsorientierter) Ebene beschreibt, und höhere Sprachen, bei denen die Beschreibung ohne umfangreiche Kenntnis der Hardware-Konfiguration durchführbar ist.
  • Bei der höheren Sprache wird von einem Kompilierersystem eine Analyse (Parsen) von aus einem Programm ausgelesenen Befehlen vorgenommen und eine Maschinensprache erstellt, um das Programm über den Mikrocomputer auszuführen. Gleichzeitig erstellt das Kompilierersystem eine Maschinensprache für die Registeroperation. Somit benötigt der Programmierer keinerlei Kenntnis über die Art der im Mikrocomputer vorgesehenen Register und die Art der Benutzung dieser Register bei der Ausführung von Befehlsanweisungen.
  • Andererseits wird durch Kompilieren des in der höheren Sprache hergestellten Programms ein Objektprogramm erstellt, wobei die Möglichkeit besteht, dass die Befehlscodes für einen gleichen Prozess redundant geschrieben sind. Ein Programm von einer Größe, welche die Größe einer im Mikrocomputer installierten ROM übersteigt, kann jedoch nicht laufen. Damit muss das Objektprogramm möglichst klein gehalten sein, damit die Größe des Programms die Größe der ROM nicht übersteigt. Aus diesem Grunde müssen die redundanten unnötigen Maschinencodes entfernt werden. Ein derartiger Prozess des Erfassens und Entfernens unnötiger Maschinencodes wird als Optimierung bezeichnet.
  • Ein Beispiel eines konventionellen Sprachenverarbeitungssystems für die höhere Sprache ist in Fig. 7 in Form eines Blockdiagramms dargestellt. Es folgt eine kurze Beschreibung eines Systems für Sprachenverarbeitung nach dem Stand der Technik anhand des mit Bezug auf Fig. 7 dargestellten Beispiels.
  • Das Sprachenverarbeitungssystem 702 weist einen Befehls- Analysier-Abschnitt 703 zum Auslesen einer Befehlsanweisung eines Quellprogramms aus einem externen Speicher 701 sowie zur Analyse derselben, einen Zwischencode-Erzeugerabschnitt 704 zum Erzeugen eines Maschinensprachencodes (Zwischencodes) auf der Grundlage der Ergebnisse der Analyse der Befehlsanweisung, einen Zwischencode-Speicherabschnitt 705 zum temporären Speichern des Zwischencodes, einen Optimierungsabschnitt 706 zum Analysieren des Zwischencodes und zum Entfernen unnötiger Befehlscodes, einen Registerwert-Speicherabschnitt 707 zum Abspeichern eines Registerwerts, auf den beim Optimierungsprozess Bezug genommen wird, sowie einen Codeausgabeabschnitt 708 zum Ausgeben eines optimierten Maschinensprachen-Endcodes (Objektcodes) an einen externen Speicher 709 auf.
  • In diesem Falle wird durch den Optimierungsabschnitt 706 eine Analyse des im Zwischencode-Speicherabschnitt 705 gespeicherten Zwischencodes in der gegebenen Reihenfolge vorgenommen. Ist der einer Analyse zu unterziehende Maschinencode ein Befehlscode für die Registeroperation, so werden Registername und Registerwert durch den Optimierungsabschnitt 706 mit dem Wert des im Registerwert-Speicherabschnitt 707 gespeicherten Registers gleichen Namens verglichen.
  • Ergibt der Vergleich, dass die Registerwerte gleich sind, so wird der Befehlscode als Zwischencode entfernt. Andererseits wird der sich aus der Analyse ergebende Wert im Registerwert-Speicherabschnitt 707 gespeichert, wenn die Registerwerte unterschiedlich sind. In diesem Falle wird der Befehlscode aus dem Optimierungsabschnitt 706 ähnlich wie die Zwischencodes, ausgnommen der Befehlscode, in den Codeausgabeabschnitt übertragen und damit als Objektcode in den externen Speicher 709 übertragen.
  • Fig. 8 und Fig. 9 sind Ablaufdiagramme, aus denen die betrieblichen Prozessabläufe des Sprachenverarbeitungssystems 702 als ein Beispiel für den Stand der Technik ersichtlich sind.
  • Zunächst wird, wie aus Fig. 8 ersichtlich, eine das Quellprogramm enthaltende Datei aus dem externen Speicher 701 eingegeben (Schritt 801). Sodann wird das eingelesene Quellprogramm geöffnet (Schritt 802). Es folgt die Bestätigung des Dateiendecodes (Schritt 803). Als nächstes wird eine Zeile der Befehlsanweisung aus der Datei ausgelesen (Schritt 804). Diese ausgelesene eine Zeile der Anweisung wird durch den Befehlsanalysierabschnitt analysiert (Schritt 805). Das Ergebnis der Analyse wird durch den Zwischencode-Erzeugerabschnitt 704 in den Maschinensprachencode übersetzt (Schritt 806). Der so hergestellte Maschinensprachencode wird als Zwischencode (Schritt 807) im Zwischencode-Speicherabschnitt 705 abgespeichert (Schritt 807). Die vorbeschriebenen Schritte werden solange wiederholt, bis das Ende der Datei erreicht ist (Schritt 803).
  • In dem dargestellten Beispiel eines konventionellen Sprachenverarbeitungssystems wird der Optimierungsprozess über die in Fig. 9 dargestellten Prozessabläufe durch den Optimierungsabschnitt 706 durchgeführt.
  • Zunächst wird ein Code aus dem im Zwischencode-Speicherabschnitt 705 gespeicherten Zwischencode ausgelesen (Schritt 809). Sodann wird der ausgelesene Zwischencode einer Analyse unterzogen zwecks Überprüfung, ob der aktuell verarbeitete Zwischencode der Befehlscode des Befehls für die Registeroperation oder ein anderer Code ist (Schritt 810). Als Ergebnis der Analyse wird die Codeausgabe vorgenommen (Schritt 814), wenn der Zwischencode nicht der Befehl für die Registeroperation ist. Handelt es sich andererseits bei dem Zwischencode um einen Befehl für die Registeropration, so wird der Registerwert als resultiertender Wert der Registeroperation nach dem aktuellen Befehlscode mit dem im Registerwert- Speicherabschnitt 707 gespeicherten entsprechenden Registerwert verglichen (Schritt 811). Der auf das Register im Registerwert-Speicherabschnitt 707 bezogene Speicherinhalt ist der Registerwert, der aus der Operation des Registers nach dem letzten Befehlscode vor dem aktuellen Zwischencode resultiert. Zeigt der Vergleich, dass die Registerwerte gleich sind, so wird eine Entscheidung dahingehend getroffen, dass der aktuelle Operationsbefehl des Befehlscodes nicht erforderlich ist, so dass der Befehlscode aus dem Zwischencode entfernt wird (Schritt 812). Andererseits wird der im Registerwert-Speicherabschnitt 707 gespeicherte Registerwert durch den sich aus der Registeroperation nach dem Befehlscode des aktuellen Operationsbefehls ergebenden aktuellen Registerwert aktualisiert (Schritt 813), wenn die in Schritt 811 miteinander verglichenen Werte unterschiedlich sind. Danach wird der Zwischencode aus dem Optimierungsabschnitt 706 an den Codeausgabeabschnitt 708 übertragen und damit vom Codeausgabeabschnitt 708 an den externen Speicher 709 übergeben (Schritt 814). Anschließend werden die vorbeschriebenen Abläufe gemäß den Schritten 809 bis 814 wiederholt, bis das Ende des Zwischencodes bestätigt wird. Die Schritte 808 bis 814 stellen den Optimierungsprozess für den Zwischencode dar.
  • Mit zunehmender Speicherkapazität und immer schneller werdenden Prozessabläufen ist in den letzten Jahren eine immer weitergehende Programmierung über die höhere Sprache zu verzeichnen.
  • Andererseits wird aufgrund der höheren Sprache eine Einzelsteuerung beispielsweise der Eingabe-/Ausgabefunktion der Hardware erschwert. Soll also für eine teilweise Beschleunigung des Programms eine Eingabe-/Ausgabesteuerung durchgeführt werden, so sind die in der höheren Sprache und der Assemblersprache gehaltenen Beschreibungen im Programm gemischt zu präsentieren. Die Funktion des Verknüpfens der Assemblersprache mit der höheren Sprache wird als "In-Line Assembler" bezeichnet.
  • Ein Beispiel eines gemischt in der C-Sprache als höhere Sprache und in der "In-Line Assembler"-Sprache geschriebenen Quellprogramms ist in Fig. 10 dargestellt. Eine "_asm"- Anweisung 1002, die in der in C-Sprache beschriebenen Funktion "Main()" 1000 geschrieben ist, ist eine deklarative Anweisung für "In-Line Assembler", wie dies in Fig. 10 dargestellt ist. Die Assemblersprache ist in einem Block geschrieben, welcher durch {} nach der "_asm"- Anweisung 1002 definiert ist. Hier repräsentieren die in den für die Registeroperation stehenden Anweiungen 1003 und 1004 benutzten Faktoren RPH und RPL Register. Die auf { } hinter der "_asm"-Anweisung 1002 folgende Anweisung 1005 ist eine in der C-Sprache geschriebene Anweisung. Wie anhand des Beispiels dargestellt, muss der Befehl für den Hardware-Betrieb durch die "In-Line Assembler- Sprache beschrieben werden, wenn eine Einzelsteuerung in dem durch die höhere Sprache, beispielsweise die C-Sprache, geschriebenen Programm erforderlich ist.
  • Der Optimierungsabschnitt in dem Sprachenverarbeitungssystem ist jedoch nicht in der Lage, den Inhalt der in der "In-Line Assemble"-Sprache geschriebenen eingefügten Befehlsanweisung zu analysieren. Sind also die aus der in der Assemblersprache geschriebenen Anweisung erzeugten Befehlscodes und die in der höheren Sprache geschriebene Anweisung redundant, so kann der redundante Befehlsmodus nicht über den Optimierungsprozess eliminiert werden.
  • Ein aus der Verarbeitung des Codes des in Fig. 10 dargestellten Quellprogramms durch das konventionelle Sprachenverarbeitungssystem resultierendes Objektprogramm 1101 zeigt die Fig. 11. Wie ersichtlich, werden für das Objektprogramm 1101 die in der "In-Line"-Assemblersprache im Quellprogramm 1001 geschriebenen Befehlsanweisungen 1003 und 1004 unbearbeitet ausgeben (siehe Anweisungen 1003 und 1004). Andererseits wird im Objektprogramm 1101 die in der C-Sprache im Quellprogramm 1001 geschriebene Anweisung 1005 im Wege von Verarbeitungsvorgängen als Anweisungen 1105 und 1006 ausgegeben. Die in den Anweisungen 1105 und 1106 enthaltenen Befehle zur Änderung der Registeroperation sind wie ersichtlich die gleichen wie diejenigen der Anweisungen 1103 und 1004 und damit aufgrund der Redundanz an Anweisungen nicht erforderlich. Da jedoch der Optimierungsabschnitt den Inhalt der "In-Line"-Assemblersprache nicht versteht (keine Analyse), bleiben die Anweisungen 1105 und 1006 bestehen und werden zusammen mit den gleichen Anweisungen 1103 und 1104 ausgegeben.
  • Wie bereits ausgeführt, ist bei der Programmierung in der höheren Sprache der Vorteil gegeben, dass der Programmierer den Zustand der Register beim Schreiben des Programms nicht zu kennen braucht, da der Betrieb der Hardware und insbesondere der Register durch das Sprachenverarbeitungssystem verwaltet wird. Die Registeroperation in dem zu diesem Zeitpunkt erstellten Objektprogramm lässt sich mit einem Minimum an Anweisungen durchführen, wie dies das Beispiel für den Stand der Technik zeigt.
  • Wie jedoch aus Fig. 11 ersichtlich, kann der vom System aus der Befehlsanweisung in der höheren Sprache erstellte Befehlscode in der Maschinensprache nicht entfernt werden, wenn die Assemblerquellsprache durch die "In-Line"-Assemblerfunktion zur Eingabe-/Ausgabesteuerung bzw. zum teilweisen Beschleunigen des Programms in das in der höheren Sprache geschriebene Programm eingefügt wird, und dies selbst dann nicht, wenn das Ergebnis der Registeroperation entsprechend der in der "In-Line Assembler-Sprache geschriebenen Anweisung sowie der in der höheren Sprache geschriebenen unmittelbar folgenden Anweisung gleich ist. Damit ergaben sich in einem solchen Falle automatisch redundante Befehlscodes. Dies führt zu unnötigen Befehlslängen. Wie bereits beschrieben, beruht dieses Problem auf der Tatsache, dass eine Analyse des Inhalts der in der "In-Line Assembler-Sprache geschriebenen Anweisung in dem Sprachenverarbeitungssystem für die höhere Sprache nicht möglich war.
  • Insbesondere wird bei der Entwicklung eines Programms für einen Ein-Chip-Microcomputer der unteren Preisklasse die Zeit für die Verkleinerung des Objektprogramms gegenüber der Gesamtzeit für das Debuggen des Programms sehr lang. Werden vom Programmierer redundante Befehlscodes manuell beseitigt, so ist riesig viel Zeit für einen derartigen Prozess erforderlich.
  • Damit beinhaltet eine Aufgabe der vorliegenden Erfindung die Bereitstellung eines Systems und eines Verfahrens für Sprachenverarbeitung, bei dem zum Verkürzen der Codelänge eines Objektprogramms einer von redundanten Befehlscodes beseitigt werden kann in dem Falle, wo eine Assemblerquellsprache durch eine "In-Line Assembler"-Funktion in ein in der höheren Sprache geschriebenes Programm eingefügt ist sowie ein aus einer Anweisung in der Assemblerquellsprache erzeugter Befehlscode und ein aus einer Anweisung in der höheren Sprache hergestellter Befehlscode redundant sind.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, ein System und ein Verfahren für Sprachenverarbeitung bereitzustellen, bei dem die zur Verkleinerung eines Objektprogramms erforderliche Zeit durch automatisches Entfernen eines der redundanten Befehlscodes verkürzt wird, wenn ein aus einer Anweisung in der Assemblerquellsprache erzeugter Befehslcode und ein aus einer Anweisung in der höheren Sprache erzeugter Befehlscode redundant sind.
  • Gemäß der vorliegenden Erfindung werden ein System und ein Verfahren für Sprachenverarbeitung wie in den unabhängigen Ansprüchen offenbart bereitgestellt.
  • Weitere Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung ergeben sich aus der nachfolgenden Einzelbeschreibung.
  • Zum besseren Verständnis der vorliegenden Erfindung wird auf die nachfolgende Einzelbeschreibung und die beiliegenden Zeichnungen einer bevorzugten Ausführungsform verwiesen, die jedoch keinerlei Einschränklung darstellen, sondern lediglich der Erläuterung dienen.
  • Es zeigen:
  • Fig. 1 ein Blockdiagramm, aus dem der Aufbau einer Ausführungsform eines erfindungsgemäßen Systems für Sprachenverarbeitung hervorgeht;
  • Fig. 2 ein Ablaufdiagramm, aus dem eine Reihe von Prozessabläufen des Sprachenverarbeitungssystems in der dargestellten Ausführungsform bis hin zur Erstellung eines Zwischencodes aus einem Quellprogramm ersichtlich sind;
  • Fig. 3 ein Ablaufdiagramm, das eine Reihe von Prozessabläufen des Sprachenverarbeitungssystems in der dargestellten Ausführungsform bis hin zur Ausgabe eines Objektprogramms mit Optimierung des Zwischencodes zeigt;
  • Fig. 4 ein Beispiel einer Quellprogrammliste zur Verarbeitung durch das Sprachenverarbeitungssystem in der dargestellten Ausführungsform;
  • Fig. 5 ein Beispiel einer der Quellprogrammliste in Fig. 4 nach Verarbeitung durch das Sprachenverarbeitungssystem in der dargestellten Ausführungsform entsprechenden Objektprogrammliste;
  • Fig. 6 ein Beispiel des Speicherinhalts eines Zwischencode- sowie eines Registerinformation-Speicherabschnitts;
  • Fig. 7 ein Blockdiagramm, aus dem der Aufbau eines Beispiels eines Sprachenverarbeitungssystems nach dem Stand der Technik ersichtlich ist;
  • Fig. 8 ein Ablaufdiagramm, in dem eine Reihe von Prozessabläufen des Sprachenverarbeitungssystems nach dem Stand der Technik bis hin zur Erstellung eines Zwischencodes aus einem Quellprogramm dargestellt sind;
  • Fig. 9 ein Ablaufdiagramm, das eine Reihe von Prozessabläufen des Sprachenverarbeitungssystems nach dem Stand der Technik bis hin zur Ausgabe eines Objektprogramms mit Optimierung des Zwischencodes zeigt;
  • Fig. 10 ein Beispiel des Quellprogramms nach dem Stand der Technik; und
  • Fig. 11 ein Beispiel einer der Quellprogrammliste in Fig. 10 entsprechenden Objektprogrammliste.
  • Es folgt eine Einzelbeschreibung der bevorzugten Ausführungsform eines erfindungsgemäßen Systems für Sprachenverarbeitung mit Bezug auf die beigefügten Zeichnungen, insbesondere Fig. 1 bis Fig. 6. Die nachfolgende Beschreibung enthält zahlreiche spezifische Einzelheiten, die ein umfassendes Verständnis der vorliegenden Erfindung sicherstellen sollen. Für den Fachmann ist jedoch klar, dass die Erfindung auch ohne diese spezifischen Details realisierbar ist. Andererseits sind allgemein bekannte Ausführungen nicht im Einzelnen dargestellt, um etwaige Unklarheiten hinsichtlich der vorliegenden Erfindung zu vermeiden.
  • Fig. 1 ist ein Blockdiagramm der bevorzugten Ausführungsform eines erfindungsgemäßen Systems für Sprachenverarbeitung. Andererseits zeigen Fig. 4 und Fig. 5 ein von der dargestellten Ausführungsform des Sprachenverarbeitungssystems zu verarbeitendes Quellprogram bzw. ein durch diesen Verarbeitungsprozess entstandenes Objektprogramm.
  • Die bevorzugte Ausführungsform des Sprachenverarbeitungssystems 102 enthält einen Befehlsanalysierabschnitt 103 zum Auslesen einer Anweisung eines Quellprogramms aus einem externen Speicher 101 und Analysieren derselben, einen Zwischencode-Erzeugerabschnitt 105 zum Erzeugen eines Maschinensprachencodes (Zwischencodes) auf der Grundlage der Ergebnisse der Analyse der Anweisung, einen Zwischencode-Speicherabschnitt 106 zum temporären Speichern des Zwischencodes, einen Optimierungsabschnitt 108 für die Analyse des Zwischencodes und zum Beseitigen unnötiger Befehlscodes, und einen Codeausabeabschnitt 110 zur Ausgabe eines optimierten Maschinensprachen- Endcodes (Objektcodes) in einen externen Speicher 111.
  • Wie aus Fig. 4 ersichtlich, ist das durch die dargestellte Ausführungsform des Sprachenverarbeitungssystems zu verarbeitende Quellprogramm 401 beispielsweise in der C-Sprache als höhere Sprache beschrieben. In das Quellprogramm 401 wird eine Assemblerquellsprache zur Bestimmung einer Registeroperation usw. durch die "In-Line Assembler"-Funktion in einem Abschnitt innerhalb _asm { } hinter einer deklarativen Anweisung 402 für "In-Line"-Assembler eingefügt. Erfolgt das Einfügen der Assemblerquellsprache mit der deklarativen Anweisung für den "In-Line"-Assembler, so folgt unmittelbar auf die Assemblerquellsprache ein Registerinformationsbefehl 404, der Angaben (Registerinformationen) hinsichtlich des Registernamens und des Registerwertes festlegt, um den Inhaltsstatus des Registers in der Assemblerquellsprache zum bestimmen. In dem Registerinformationsbefehl 404 stellen RPH und RPL Registernamen und für die jeweiligen Registernamen gegebene Ziffern, d. h. 3 und 1, Werte der entsprechenden Register dar. Man beachte, dass als höhere Sprache zum Beschreiben des Quellprogramms 401 nicht absolut die C-Sprache vorgeschrieben ist, sondern auch jede sonstige höhere Sprache wie COBOL usw. benutzt werden kann.
  • Der Befehlsanalysierabschnitt 103 weist einen Registerinformation-Diskriminierabschnitt 104 zum Diskriminieren einer Befehlsanweisung, wenn das zu analysierende Quellprogramm eine die Registerinformation wie beispielsweise die Anweisung 404 in Fig. 4 bezeichnende Anweisung enthält, auf. Hierdurch wird zusätzlich zur Analyse des Inhalts der in der höheren Sprache des Quellprogramms geschriebenen Anweisung die Diskriminierung der die Registerinformation kennzeichnenden Anweisung möglich.
  • Der Zwischencode-Erzeugerabschnitt 105 erstellt den Zwischencode auf der Basis des Ergebnisses der Analyse der Befehlsanweisung durch den Befehlsanalysierabschnitt 103. Der so erzeugte Zwischencode ist ein dem schließlich auszugebenden Objektcode ähnlicher Maschinensprachencode. Da jedoch eine Optimierung noch nicht stattgefunden hat, kann der Zwischencode redundante Befehlscodes enthalten.
  • Der Zwischencode-Speicherabschnitt 106 enthält einen Registerinformation-Speicherabschnitt 107 zum Abspeichern der Registerinformation als durch die Anweisung zum Kennzeichnen des durch den Registerinformations-Diskriminierabschnitt 104 nach erfolgter Analyse der Anweisung durch den Anweisungsanalysier- abschnitt 103 bestimmter Zwischencode. Hierdurch kann neben dem vom Zwischencode-Erzeugerabschnitt 105 erstellten Zwischencode auch die Registerinformation gespeichert werden, wenn die die Registerinformation bezeichnende Anweisung vorhanden ist.
  • Fig. 6 zeigt Beispiele des Inhalts des Zwischencode-Speicherabschnitts 106 und des Registerinformatiuons-Speicherabschnitts 107. Hier bezeichnet im Zwischencode 601 das Bezugszeichen 602 den Bereich, in den die in der "In-Line"- Assemblersprache geschriebene Anweisung einzufügen ist. An die durch das Zeichen 602 bezeichnete Stelle wird die Anweisung in der "In-Line"-Assemblersprache gesetzt. Man beachte, dass die Möglichkeit besteht, die in der "In-Line"-Assemblersprache geschriebene Anweisung statt durch Bestimmen der Einfügeposition durch das Zeichen 602 direkt einzufügen.
  • Eine Anweisung 603 zum Bestimmen der Registerinformation wird auf der Grundlage der Registerinformation (Anweisung 404 in Fig. 4) in das Quellprogramm eingebracht. Eine durch die Anweisung 603 zum Bezeichnen der Registerinformation bestimmte Zahl entspricht einer jeden der Ziffern im Zahlenbereich 610 (dem durch * markierten Bereich), in dem die Kennzahl für die Registerinformation im Registerinformation-Speicherabschnitt 107 abgelegt ist. Die Bezugsziffern 611 bis 614 bezeichnen Abschnitte zum Speichern der Werte der entsprechenden Register. Die jeweiligen Registerwert-Speicherabschnitte sind durch entsprechende Registernamen gekennzeichnet. In den Registerabschnitten 611 bis 614 befinden sich durch Registerinformamationsbefehle gekennzeichnete Registerwerte. In der Annahme, dass beispielsweise die eine Registerinformation bezeichnende Anweisung 603 auf der Basis der Registerinformation 404 in dem Quellprogramm gemäß Fig. 4 eingefügt ist, werden der Wert des Registers RPH und der Wert des Registers RPL in der Registerinformatrion 404 in den Spalten Nr. 1 des Zahlenbereichs 610 gespeichert. Die Anweisung 604 ist der in C-Sprache geschriebene Befehlscode.
  • Der Optimierabschnitt 108 analysiert den im Zwischencode- Speicherabschnitt 106 und im Registerinformation-Speicherabschnitt 107 gespeicherten Zwischencode in der gegebenen Reihenfolge. Ist der aktuell zu analysierende Zwischencode der Befehlscode für die Registeroperation, so werden Name und Wert des Registers nach der Registeroperation mit den im Registerwert-Speicherabschnitt 109 gespeicherten Werten des Registers gleichen Namens verglichen.
  • Ergibt sich aus dem Vergleich, dass die Registerwerte gleich sind, so wird der aktuelle Zwischencode als Befehlscode gestrichen. Bei Feststellung andererseits, dass die Registerwerte unterschiedlich sind, wird der sich aus der Analyse ergebende Registerwert im Registerwert-Speicherabschnitt 109 abgespeichert.
  • Handelt es sich andererseits bei dem Zwischencode um eine Anweisung, die auf der Basis der die Registerinformation des Quellprogramms bezeichnenden Anweisung eingefügt wurde, so wird der Wert des Registers im Registerinformation-Speicherabschnitt 107 entsprechend der Befehlsannweisung an den Registerwert-Speicherabschnitt 109 gespeichert.
  • Der Codeausgabeabschnitt 110 gibt das abschließend zu optimiernde Objektprogramm an einen externen Speicher 111, in dem das Objektprogramm durch den Optimierungsabschnitt 108 optimiert wird.
  • Als nächstes folgt eine Beschreibung des Funktionsablaufs der dargestellten Ausführungsform des erfindungsgemäßen Systems für Sprachenverarbeitung mit Bezug auf die Ablaufdiagramme in Fig. 2 und Fig. 3.
  • Wie aus Fig. 2 ersichtlich, wird zunächst eine das Quellprogramm enthaltende Datei aus dem externen Speicher 101 eingegeben (Schritt 201). Sodann wird das eingelesene Quellprogramm geöffnet (Schritt 202). Es folgt die Bestätigung des Dateiendecodes (Schritt 203). Als nächstes wird eine Zeile der Anweisung aus der Datei ausgelesen (Schritt 204). Diese ausgelesene eine Zeile der Anweisung wird durch den Befehlsanalysierabschnitt (103) analysiert (Schritt 205).
  • Entscheidet hier der Befehlsanalysierabschnitt 103, dass die aktuell analysierte Befehlsanweisung eine die Registerinformation kennzeichnende Anweisung ist, so wird die Anweisung 503 in Fig. 5 auf der Basis der Befehlsanweisung als Zwischencode erstellt und die durch den Befehlscode bezeichnete Registerinformation im Registerinformation-Speicherabschnitt abgespeichert (Schritte 206 und 209).
  • Wird andererseits befunden, dass die aktuell analysierte Anweisung keine Anweisung ist, welche eine Registerinformation bezeichnet, so wird das Ergebnis der Analyse durch den Zwischencode-Erzeugerabschnitt 105 in den Maschinensprachencode übersetzt (Schritt 207). Der so erstellte Maschinensprachencode wird sodann im Zwischencode-Speicherabschnitt 106 als Zwischencode abgespeichert (Schritt 208). Die vorbeschriebenen Schritte werden solange wiederholt, bis das Ende der Datei erreicht ist (Schritt 203).
  • Als nächstes führt das Sprachenverarbeitungssystem 102 über den Optimierungsabschnitt 108 die in Fig. 3 dargestellten Prozessabläufe aus.
  • Zunächst wird ein Code aus dem im Zwischencode-Speicherabschnitt 106 gespeicherten Zwischencode ausgelesen (Schritt 302). Sodann wird der ausgelesene Zwischencode analysiert zwecks Feststellung, ob der aktuell verarbeitete Zwischencode die Kennzeichnung für die Registerinformation enthält (Schritt 303). Enthält der Zwischencode die Kennzeichnung für die Registerinformation, so wird der entsprechend dem Zwischencode im Registerinformations-Speicherabschnitt 107 gespeicherte Registerwert in dem Registerwert-Speicherabschnitt abgespeichert (Schritt 307).
  • Sodann wird eine Prüfung dahingehend durchgeführt, ob der Befehlscode des Registeroperationsbefehls der Registeroperationsbefehl oder ein sonstiger Code ist (Schritt 304). Ergibt die Prüfung, dass der Zwischencode nicht der Registeroperationsbefehl ist, so wird die Codeausgabe durchgeführt (Schritt 308). Ist andererseits der Zwischencode der Registeroperationsbefehl, so wird der Registerwert nach erfolgter Registeroperation mit dem im Registerwert-Speicherabschnitt 109 gespeicherten Registerwert verglichen (Schritt 305).
  • Zeigt der Vergleich, dass die aktuell verglichenen Registerwerte gleich sind, wird entschieden, dass die Befehlscodes der Operationsbefehle gleich sind und wird der aktuell verarbeitete Befehlscode entfernt. Bei andererseits unterschiedlichen Registerwerten wird der Speicherinhalt im Registerwert- Speicherabschnitt 109 mit dem sich aus der Registeroperation auf der Basis des Befehlscodes ergebenden Wert aktualisiert (Schritt 307).
  • Wie an anderer Stelle bereits ausgeführt, wird der im Wege des Optimierungsprozesses optimierte Maschinensprachencode aus dem Optimierungsabschnitt 108 übertragen und sodann durch den Codeausgabeabschnitt 110 in den externen Speicher 111 ausgegeben (Schritt 308). Die vorbeschriebenen Schritte werden wiederholt, bis das Ende der Datei erreicht ist (Schritt 301).
  • Fig. 5 zeigt das aus der Verarbeitung des Quellprogramms 401 in Fig. 4 entstandene Objektprogramm 501. Eine "_ asm"-Anweisung 402 im Quellprogramm ist die deklarative Anweisung für die "In-Line Assembler-Sprache. Der Optimierungsabschnitt 108 der dargestellten Ausführungsform des Sprachenverarbeitungssystems 102 kann den Inhalt des Registers in der Assembleranweisung 402 nicht analysieren und es kann eine Optimierung unter Benutzung der Registerinformation erfolgen, wenn ein bekannter Registerstatus als eine Registerinformation bezeichnende Anweisung, wie beispielsweise die Registerinformationsanweisung 404, gegeben ist. In Fig. 4 entsprechen die "In-Line Assembler"-Anweisung 402 und die Anweisungen 411 und 412 der "In-Line Assembler"-Anweisung 1002 und den Anweisungen 1003 bzw. 1004 gemäß Fig. 10.
  • Ein Vergleich des durch die bevorzugte Ausführungsform des Optimierungsprozesses entstandenen Objektprogramms 501 mit dem im Wege des konventionellen Optimierungsprozesses entstandenen Objektprogramm 1101 zeigt, dass die im Objektprogramm 1101 gegebenen Anweisungen 1105 und 1106 im Objektprogramm 501 nicht mehr vorhanden sind. Da gemäß Fig. 5 der Optimierungsprozess auf der Basis der Registerinformationsanweisung 404 durchgeführt wird, kann der der in der höheren Sprache geschriebene und der "In-Line Assembler"-Anweisung 402 unmittelbar nachfolgenden Registeroperationsanweisung 405 (Anweisung für Registeroperation in der gleichen Weise wie die nach den Anweisungen 411 und 412) entsprechende Zwischencode mit Sicherheit beseitigt werden. Deshalb kann bei der dargestellten Ausführungsform keine Redundanz hinsichtlich der Registeroperationsanweisungen auftreten.
  • Da wie vorstehend ausgeführt nach dem Stand der Technik die "In-Line Assembler"-Anweisung unverarbeitet in den Zwischencode eingefügt und nicht analysiert wird, kann die Registeroperationsanweisung selbst dann nicht gelöscht werden, wenn die Registeroperationen nach der durch die "In-Line Assembler"-Anweisung erzeugten Registeroperationsanweisung und der unmittelbar nachfolgenden Registeroperationsanweisung aus der Anweisung in der höheren Sprache gleich sind. Demgegenüber kann bei der dargestellten Ausführungsform die redundante Registeroperationsanweisung über den Optimierungsprozess entfernt werden, wenn die Registeroperationen nach der durch die "In-Line Assembler"-Anweisung erzeugten Registeroperationsanweisung und der unmittelbar nachfolgenden Registeroperationsanweisung aus der Anweisung in der höheren Sprache auf der Basis der Registerinformation gleich sind, indem der Registerstatus (Registerwert) in der Registeroperation durch die "In- Line Assembler"-Anweisung als Registerinformation ausgewiesen wird.
  • Wird, wie an anderer Stelle bereits ausgeführt, erfindungsgemäß die Assemblerquellsprache durch die "In-Line Assembler"-Funktion in das Programm der höheren Sprache eingefügt und sind der aus der Anweisung in der Assemblerquellsprache erzeugte Befehlscode und der aus der Anweisung des Programms in der höheren Sprache entstandene Befehlscode redundant, so kann der redundante Befehlscode gelöscht werden, um die Codelänge des Objektprogramms zu verringern.
  • Sind also der aus der Anweisung in der Assemblerquellsprache erzeugte Befehlscode und der aus der Anweisung des Programms in der höheren Sprache entstandene Befehlscode redundant, so ist erfindungsgemäß der redundante Befehlscode automatisch löschbar. Damit besteht die Möglichkeit, die zur Verringerung der Objektprogrammgröße erforderliche Zeit zu verringern. Dies ist eindeutig ein Beitrag zur Verkürzung der Zeit für die Entwicklung eines Programms.

Claims (8)

1. System für Sprachenverarbeitung mit:
einer Befehlsanalysiereinrichtung (103) zum Eingeben eines gemischt in einer höheren Sprache und einer Assemblersprache geschriebenen Quellprogramms (101) und zum Analysieren von darin enthaltenen Befehlsanweisungen;
einer Zwischencode-Erzeugereinrichtung (105) zum Erstellen eines Zwischencodes der Befehlsanweisungen auf der Basis des Ergebnisses der von der Befehlsanalysiereinrichtung (103) durchgeführten Analyse;
einer Codeoptimierungseinrichtung (108) zur Optimierung durch Löschen eines in der höheren Sprache beschriebenen Registeroperationsbefehls gegenüber dem Registeroperations-Befehlscode im Zwischencode, wenn der darin ausgewiesene Registerwert der gleiche ist wie ein durch einen unmittelbar vorausgehenden Registeroperations-Befehlscode angezeigter Wert eines gleichnamigen Registers;
einer Codeerzeugereinrichtung (110) zum Erzeugen eines Maschinensprachencodes aus dem durch Codeoptimierung optimierten Zwischencode und zum Ausgeben eines Objektcodes;
einer Registerinformation-Diskriminiereinrichtung (104) zum Feststellen, ob die von der Befehlsanalysiereinrichtung analysierte Anweisung eine Registerinformation ist, die einen Registerwert ausweist, der einem durch die Assemblersprache beschriebenen Registeroperationsbefehl entspricht; und
einer Registerinformation-Speichereinrichtung (107) zum Speichern der von der Registerinformation-Diskriminiereinrichtung (104) erfassten Registerinformation; wobei:
die Codeoptimierungseinrichtung (108) eine Optimierung durch Löschen eines Registeroperationsbefehls gegenüber dem Registeroperations-Befehlscode im Zwischencode vornimmt, wenn der darin ausgewiesene Registerwert mit dem Registerwert eines durch eine unmittelbar vorausgehende Registerinformation oder einen unmittelbar vorausgehenden Registeroperationbefehlscode ausgewiesenen Registers gleichen Namens identisch ist.
2. System für Sprachenverarbeitung nach Anspruch 1, ferner mit:
einer Zwischencode-Speichereinrichtung (106) zum Speichern des durch die Zwischencode-Erzeugereinrichtung (105) erstellten Zwischencodes; wobei:
die Registerinformation-Diskriminiereinrichtung (104) eine Positionsangabe für die Registerinformation in den in der Zwischencode-Speichereinrichtung (106) als Zwischencode gespeicherten Zwischencode einfügt und diese Registerinformation unter Zuordnung zu dieser Positionsangabe in der Registerinformation-Speichereinrichtung (107) speichert.
3. System für Sprachenverarbeitung nach Anspruch 1 oder 2, ferner mit:
einer Registerwert-Speichereinrichtung (109) zum Abspeichern eines durch den Registeroperation-Befehlscode in dem von der Codeoptimierungseinrichtung (108) zu analysierenden Zwischencode oder durch die Registerinformation ausgewiesenen Registerwerts.
4. System für Sprachenverarbeitung nach Anspruch 1, ferner mit:
einer Zwischencode-Speichereinrichtung (106) zum Speichern des von der Zwischencode-Erzeugereinrichtung (105) erzeugten Zwischencodes; und
einer Registerwert-Speichereinrichtung (109) zum Speichern eines durch den Registeroperation-Befehlscode in dem durch die Codeoptimierungseinrichtung (108) zu analysierenden Zwischencode oder durch die Registerinformation angezeigten Registerwerts; wobei:
die Registerinformation-Diskriminiereinrichtung (104) eine Positionsinformation der Registerinformation in den in der Zwischencode-Speichereinrichtung (106) als Zwischencode gespeicherten Zwischencode einfügt und diese Registerinformation unter Zuordnung zu dieser Positionsangabe in der Registerinformation-Speichereinrichtung (107) speichert;
und wobei die Codeoptimierungseinrichtung (108) den durch die der Positionsangabe entsprechende Registerinformation der Registerinformation-Speichereinrichtung (107) bezeichneten Registerwert speichert, wenn die Positionsinformation der Registerinformation im Zwischencode vorhanden ist, und diesen durch den Registeroperation-Befehlscode angezeigten Registerwert in der Registerwert-Speichereinrichtung (109) speichert, wenn der vom Registeroperation-Befehlscode im Zwischencode angezeigte Registerwert anders ist als der von der unmittelbar vorausgehenden Registerinformation bzw. dem unmittelbar vorausgehenden Registeroperation-Befehlscode angezeigte Registerwert eines Registers gleichen Namens.
5. Verfahren für Sprachenverarbeitung mit den Schritten:
einem Befehlsanalysierschritt für die Eingabe eines gemischt in einer höheren Sprache und in einer Assemblersprache geschriebenen Quellprogramms sowie Analysieren der darin enthaltenen Befehlsanweisungen;
einem Zwischencode-Erzeugungsschritt zum Erzeugen eines Zwischencodes der Befehlsanweisungen aus dem Ergebnis der im Rahmen des Befehlsanalysierschritts durchgeführten Analyse;
einem Codeoptimierungsschritt zum Durchführen einer Optimierung durch Löschen eines durch die höhere Sprache beschriebenen Registeroperationsbefehls gegenüber dem Registeroperation-Befehlscode im Zwischencode, wenn der darin ausgewiesene Registerwert gleich ist einem durch einen unmittelbar vorausgehenden Registeroperation-Befehlscode angezeigten Wert eines Registers gleichen Namens;
einem Codeerzeugungsschritt zum Erzeugen eines Maschinensprachencodes aus dem durch Codeoptimierung optimierten Zwischencode sowie zum Ausgeben eines Objektcodes;
einem Registerinformation-Diskriminierschritt zur Feststellung, ob die im Rahmen des Befehlsanalysierschritts analysierte Anweisung eine Registerinformation ist, welche einen einem in der Assemblersprache geschriebenen Registeroperationsbefehl entsprechenden Registerwert anzeigt; und
einem Registerinformation-Speicherschritt zum Speichern der im Registerinformation-Diskriminierschritt erfassten Registerinformation; wobei:
der Codeoptimierungsschritt eine Optimierung durchführt, indem ein Registeroperationsbefehl gegenüber dem Registeroperation-Befehlscode im Zwischencode gelöscht wird, wenn der darin angezeigte Registerwert gleich ist einem Registerwert eines gleichnamigen Registers wie durch eine unmittelbar vorhergehende Registerinformation oder einen unmittelbar vorhergehenden Registeroperation-Befehlscode angezeigt.
6. Verfahren für Sprachenverarbeitung nach Anspruch 5 mit den weiteren Schritten:
einem Zwischencode-Speicherschritt zum Abspeichern des im Rahmen des Zwischencode-Erzeugungsschritts erzeugten Zwischencodes; wobei:
der Registerinformation-Diskriminierschritt den Schritt des Einfügens einer Positionsinformation der Registerinformation in den im Rahmen des Zwischencode- Speicherschritts als Zwischencode abgespeicherten Zwischencode, und Abspeichern der Registerinformation im Rahmen des Registerinformations-Speicherschritts unter Zuordnung zu dieser Positionsinformation aufweist.
7. Verfahren für Sprachenverarbeitung nach Anspruch 5 oder 6 ferner mit dem Schritt des Speicherns eines Registerwertes, der von dem Registeroperation-Befehlscode in dem im Rahmen des Codeoptimierungsschritts zu analysierenden Zwischencodes oder durch die Registerinformation angezeigt ist, in einer Registerwert-Speichereinrichtung.
8. Verfahren für Sprachenverarbeitung nach Anspruch 5, ferner mit den Schritten:
einem Zwischencode-Speicherschritt zum Speichern des im Rahmen des Zwischencode-Erzeugungsschritts erstellten Zwischencodes; und
einem Registerwert-Speicherschritt zum Speichern eines von einem Registeroperation-Befehlscode in dem im Rahmen des Optimierungsschritts zu analysierenden Zwischencode oder durch die Registerinformation angezeigten Registerwertes; wobei:
der Registerinformation-Diskriminierschritt den Schritt des Einfügens einer Positionsinformation der Registerinformation in den im Rahmen des Zwischencode-Speicherschritts als Zwischencode gespeicherten Zwischencode sowie des Speicherns der Registerinformation im Rahmen des Registerinformation-Speicherschritts unter Zuordnung zu dieser Positionsinformation enthält, und wobei:
im Rahmen des Codeoptimierungsschritts der Registerwert, der von der der Positionsinformation entsprechend in dem Registerinformation-Speicherschritt gespeicherten Registerinformation angezeigt wird, gespeichert wird, wenn die Positionsinformation der Registerinformation in dem Zwischen- code vorhanden ist, und der von dem Registeroperation-Befehlscode angezeigte Registerwert im Ramen des Registerwert-Speicherschritts gespeichert wird, wenn der vom Registeroperation-Befehlscode im Zwischencode angezeigte Registerwert anders ist als der durch den unmittelbar vorausgehenden Wert des Registers gleichen Namens angezeigte Wert bzw. der durch den unmittelbar vorausgehenden Registeroperation-Befehlscode angezeigte Wert des gleichnamigen Registers.
DE69429305T 1993-07-07 1994-07-06 System und Verfahren für Sprachenverarbeitung Expired - Fee Related DE69429305T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5167584A JPH0721033A (ja) 1993-07-07 1993-07-07 言語処理装置及びその方法

Publications (2)

Publication Number Publication Date
DE69429305D1 DE69429305D1 (de) 2002-01-17
DE69429305T2 true DE69429305T2 (de) 2002-05-16

Family

ID=15852468

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69429305T Expired - Fee Related DE69429305T2 (de) 1993-07-07 1994-07-06 System und Verfahren für Sprachenverarbeitung

Country Status (4)

Country Link
US (1) US5832273A (de)
EP (1) EP0633526B1 (de)
JP (1) JPH0721033A (de)
DE (1) DE69429305T2 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3196675B2 (ja) * 1996-12-27 2001-08-06 日本電気株式会社 言語処理方式
JPH1115689A (ja) * 1997-06-19 1999-01-22 Nec Corp ソフトウェアのデバッグ方法及びデバッグ・プログラムを記録した記録媒体
US6801995B1 (en) * 1998-08-04 2004-10-05 Agere Systems, Inc. Method for optimally encoding a set of instruction codes for a digital processor having a plurality of instruction selectable resource types and an associated optimized set of instruction codes
US6952823B2 (en) * 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
US6289509B1 (en) * 1998-09-01 2001-09-11 Pkware, Inc. Software patch generator
US6314557B1 (en) * 1998-12-14 2001-11-06 Infineon Technologies Development Center Tel Aviv Ltd Hybrid computer programming environment
JP4041248B2 (ja) * 1999-07-09 2008-01-30 松下電器産業株式会社 コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法
JP3640081B2 (ja) * 1999-12-27 2005-04-20 日本電気株式会社 Mpiプログラムのコンパイルにおける最適化方法
US7844579B2 (en) 2000-03-09 2010-11-30 Pkware, Inc. System and method for manipulating and managing computer archive files
US20050015608A1 (en) 2003-07-16 2005-01-20 Pkware, Inc. Method for strongly encrypting .ZIP files
US6879988B2 (en) 2000-03-09 2005-04-12 Pkware System and method for manipulating and managing computer archive files
US8230482B2 (en) 2000-03-09 2012-07-24 Pkware, Inc. System and method for manipulating and managing computer archive files
US8959582B2 (en) 2000-03-09 2015-02-17 Pkware, Inc. System and method for manipulating and managing computer archive files
JP2001290652A (ja) * 2000-04-04 2001-10-19 Matsushita Electric Ind Co Ltd プログラム変換装置、プログラム変換方法及び記録媒体
JP2002024029A (ja) * 2000-07-11 2002-01-25 Toshiba Corp コンパイラ、コンパイル方法及びコンパイルプログラムを記録したコンピュータ読み取り可能な記録媒体
US6968548B1 (en) * 2000-12-01 2005-11-22 Unisys Corporation Method and apparatus for sharing data structures between assembly language programs and high-level language programs
JP3801545B2 (ja) 2002-08-02 2006-07-26 松下電器産業株式会社 コンパイラ用プログラム、コンパイラ装置及びコンパイル方法
US8250656B2 (en) * 2007-11-21 2012-08-21 Mikhail Y. Vlasov Processor with excludable instructions and registers and changeable instruction coding for antivirus protection
US8473897B2 (en) * 2008-10-03 2013-06-25 Microsoft Corporation Common intermediate representation for data scripting language
JP5689366B2 (ja) * 2011-05-31 2015-03-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ゾーン10進数形式の変数へのアクセスを有する言語のバイナリコードを最適化する方法、並びにその最適化装置及びコンピュータ・プログラム
JP2011181114A (ja) * 2011-06-23 2011-09-15 Panasonic Corp プログラム変換装置、プログラム変換方法及び記録媒体
US8959493B2 (en) * 2011-06-27 2015-02-17 International Business Machines Corporation Using range validation in assembly language programming
US10180828B2 (en) * 2014-04-29 2019-01-15 Significs And Elements, Llc Systems and methods for power optimization of processors
CN109491918B (zh) * 2018-11-22 2020-05-01 中国人民解放军战略支援部队信息工程大学 一种汇编冗余指令的检测方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4642764A (en) * 1984-08-13 1987-02-10 International Business Machines Corporation Method of developing formal identities and program bases in an optimizing compiler
US4667290A (en) * 1984-09-10 1987-05-19 501 Philon, Inc. Compilers using a universal intermediate language
US5428786A (en) * 1991-03-07 1995-06-27 Digital Equipment Corporation Branch resolution via backward symbolic execution
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
JPH04309133A (ja) * 1991-04-08 1992-10-30 Kobe Nippon Denki Software Kk コンパイル最適化方式
JPH0535494A (ja) * 1991-07-29 1993-02-12 Nec Corp 高級プログラム言語の対話型最適化コンパイル方式
US5293631A (en) * 1991-08-06 1994-03-08 Hewlett-Packard Company Analysis and optimization of array variables in compiler for instruction level parallel processor
US5339428A (en) * 1991-09-04 1994-08-16 Digital Equipment Corporation Compiler allocating a register to a data item used between a use and store of another data item previously allocated to the register
US5418959A (en) * 1992-11-30 1995-05-23 Intel Corporation Instruction operation size optimization

Also Published As

Publication number Publication date
DE69429305D1 (de) 2002-01-17
EP0633526A2 (de) 1995-01-11
US5832273A (en) 1998-11-03
EP0633526A3 (de) 1995-06-07
EP0633526B1 (de) 2001-12-05
JPH0721033A (ja) 1995-01-24

Similar Documents

Publication Publication Date Title
DE69429305T2 (de) System und Verfahren für Sprachenverarbeitung
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE69129067T2 (de) Verfahren um die skalaren datenabhängigkeiten für einen optimisationskompiler darzustellen
DE69622305T2 (de) Verfahren und Gerät für einen optimierenden Kompiler
DE69031538T2 (de) System und Verfahren zur Sammlung von Softwareanwendungsereignissen
DE68926956T2 (de) Anordnung zur teilung eines generischen kodes für ein digitales datenverarbeitungssystem
DE68925523T2 (de) Erzeugung eines wirksamen Kodes für einen unähnliche Registrierräume enthaltenden Computer
DE69622219T2 (de) Optimierungsgerät zum Entfernen von Gefahren durch Arrangierung der Befehlsreihenfolge
DE69623146T2 (de) Verfahren und Vorrichtung zum Koordinieren der Benutzung von physikalischen Registern in einem Mikroprozessor
DE69719073T2 (de) Selektive emulationsinterpretierung mit transformierten befehlen
DE3485999T2 (de) Hochgeschwindigkeitverarbeitungssystem fuer rechneranlage.
DE69620057T2 (de) Optimierer
DE19960050A1 (de) Grafische Benutzerschnittstelle zur Entwicklung von Anwendungsbeispielen unter Verwendung einer Testobjektbibliothek
DE3689389T2 (de) Datenverarbeitungsprozessor.
DE3886756T2 (de) Betriebsmittelzugriff für Multiprozessorrechnersystem.
EP3568757B1 (de) Verfahren zur erzeugung von quellcode
DE69026208T2 (de) Verfahren zur Erkennung möglicher Fehler einer Programmierung in Assembler Sprache mit Erfassung offensichtlicher Inkonsistenz mit einer vorhergehenden Operation
EP1347599B1 (de) Verfahren und Protokolltester zum Dekodieren gemäss einer Protokollbeschreibung kodierter Daten
DE19581754B4 (de) System und Verfahren zum bedingten Kompilieren einer Software-Kompiliereinheit
DE10103070B4 (de) Verfahren und Prüfschaltung zum Ermitteln eines Gültigkeitsstatus für einen zeitlich zurückliegenden Loadbefehl
DE3485915T2 (de) Vektormaskierungssteuerungssystem.
DE69731574T2 (de) Kompiliergerät und -verfahren
WO2004100090A1 (de) Speicherverwaltung bei einem tragbaren datenträger
DE69428951T2 (de) Sprachverarbeitungssystem und -verfahren
DE69425289T2 (de) Kompilierungssystem für Programmiersprachen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: NEC ELECTRONICS CORP., KAWASAKI, KANAGAWA, JP

8339 Ceased/non-payment of the annual fee