DE69429305T2 - System und Verfahren für Sprachenverarbeitung - Google Patents
System und Verfahren für SprachenverarbeitungInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 30
- 238000005457 optimization Methods 0.000 claims description 41
- 238000004458 analytical method Methods 0.000 claims description 15
- 239000000203 mixture Substances 0.000 claims description 3
- 238000003672 processing method Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 238000012790 confirmation Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
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.
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)
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)
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 |
-
1993
- 1993-07-07 JP JP5167584A patent/JPH0721033A/ja active Pending
-
1994
- 1994-07-06 EP EP94110522A patent/EP0633526B1/de not_active Expired - Lifetime
- 1994-07-06 US US08/267,911 patent/US5832273A/en not_active Expired - Fee Related
- 1994-07-06 DE DE69429305T patent/DE69429305T2/de not_active Expired - Fee Related
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 |