DE10111461B4 - Verfahren zum Umsetzen eines Objektcodes für einen ersten Prozessor in einen Objektcode eines zweiten Prozessors - Google Patents

Verfahren zum Umsetzen eines Objektcodes für einen ersten Prozessor in einen Objektcode eines zweiten Prozessors Download PDF

Info

Publication number
DE10111461B4
DE10111461B4 DE10111461A DE10111461A DE10111461B4 DE 10111461 B4 DE10111461 B4 DE 10111461B4 DE 10111461 A DE10111461 A DE 10111461A DE 10111461 A DE10111461 A DE 10111461A DE 10111461 B4 DE10111461 B4 DE 10111461B4
Authority
DE
Germany
Prior art keywords
jump
predicate
processor
conditional
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
DE10111461A
Other languages
English (en)
Other versions
DE10111461A1 (de
Inventor
Manfred Dr. Stadel
Johannes Zeller
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.)
Fujitsu Technology Solutions Intellectual Property GmbH
Original Assignee
Fujitsu Technology Solutions GmbH
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 Fujitsu Technology Solutions GmbH filed Critical Fujitsu Technology Solutions GmbH
Priority to DE10111461A priority Critical patent/DE10111461B4/de
Publication of DE10111461A1 publication Critical patent/DE10111461A1/de
Application granted granted Critical
Publication of DE10111461B4 publication Critical patent/DE10111461B4/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/52Binary to binary

Abstract

Verfahren zum Umsetzen eines Objektcodes für einen ersten Prozessor in einen Objektcode eines zweiten Prozessors, der neben Sprungbefehlen noch Befehle mit Prädikat als weitere bedingte Befehle kennt,
– bei dem der jeweils nächste Befehl des Objektcodes des ersten Prozessors analysiert und in den Objektcode des zweiten Prozessors umgesetzt wird,
dadurch gekennzeichnet, daß
– die Umsetzung des Objektcodes für den ersten Prozessor in den Objektcode des zweiten Prozessors in einem einzigen Lauf über die Befehle für den ersten Prozessor erfolgt,
– ein aktuelles Prädikat mit einer Gültigkeitsdauer definiert wird, wobei das Prädikat den Wert "wahr" oder einen Verweis auf ein Prädikatregister einnehmen kann und die Gültigkeitsdauer eine Befehlsadresse im Objektcode des ersten Prozessors ist,
– das aktuelle Prädikat zunächst auf den Wert "wahr" mit unbegrenzter Gültigkeitsdauer gesetzt wird,
– beim Analysieren des nächsten Befehls überprüft wird, ob ein bedingter Vorwärtssprung zu einem Sprungziel vorliegt,...

Description

  • Die Erfindung betrifft ein Verfahren zum Umsetzen eines Objektcodes für einen ersten Prozessor in einen Objektcode eines zweiten Prozessors.
  • Derartige Verfahren finden immer häufiger Anwendung, da es mittlerweile eine Vielzahl von Programmen gibt, die im Objektcode vorliegen, aber auf neuen Computern nur unzureichend funktionieren. Dies liegt daran, daß zum Zeitpunkt des Erzeugens des vorliegenden Objektcodes Befehlssätze neuerer Prozessoren nicht bekannt waren. Die Programme müssen also umgesetzt werden in den Objektcode, d.h. in die Befehlssätze, die für die neueren Prozessoren vorgesehen sind. Dies erfolgt mittlerweile üblicherweise mittels Emulation. Das bedeutet, in dem Computer mit dem neuen Prozessor wird die Arbeitsweise des ursprünglich Prozessors emuliert.
  • Die Emulation kann durch dynamische Objektcodeübersetzung beschleunigt werden. In diesem Fall beginnt die Ausführung eines Programms mit der Übersetzung des Objektcodes 100, ab der Startadresse, wie in 1 dargestellt ist. Die Übersetzung wird so lange fortgesetzt, bis ein Sprungbefehl 101 erreicht wird, dessen Sprungziel nicht statisch bekannt ist, sondern erst bei Ablauf des Programms berechnet wird. Sobald ein Programmstück in Objektcode 110 für den Zielprozessor übersetzt ist, wird es auf dem Zielprozessor ausgeführt. Wenn bei dieser Ausführung dann ein Sprungbefehl 101 mit dynamisch berechnetem Sprungziel erreicht wird, wird die Übersetzung für das Programmstück ab dem nun bekannten Sprungziel angestoßen, wenn es inzwischen nicht bereits eine Übersetzung hierfür gibt. Die übersetzten Programmteile werden nämlich in einem Speicherbereich aufbewahrt, um mehrfache Übersetzungen desselben Programmstücks zu vermeiden. Die Erfindung bezieht sich nunmehr bevorzugt auf dynamische Objektcode-Übersetzer, für eine Zielprozessor-Architektur, die bedingte Befehle anbietet, wie sie in 2 beispielhaft dargestellt sind. Bedingte Befehle 200 haben neben den Feldern für den Befehlscode 201, Operanden 203, 204 und Ergebnis 205 ein weiteres Feld 202 für einen zusätzlichen Operanden, ein Prädikatregister, das ihre Ausführung steuert. Die Befehle werden nur dann ausgeführt bzw. nur dann zu einem Abschluß gebracht, wenn das Prädikatregister den Wert "wahr" enthält. Wenn das Prädikatregister den Wert "falsch" enthält, werden die Befehle nicht ausgeführt bzw. ihre Ausführung annulliert. Bedingte Befehle sind typisch für sogenannte "very long instruction word" (VLIW) bzw. "explicit parallel instruction computer" (EPIC) .
  • Bedingte Befehle können gewinnbringend eingesetzt werden, um kurze Fallunterscheidungen ohne Sprungbefehl zu realisieren. Eine in der Programmiersprache C geschriebene If-Anweisung:
    If (x<y) z=x; else z=y;
    wird in eine Folge von Maschinenbefehlen 520 übersetzt, wie in 5 zu sehen ist. Demgegenüber werden auf den Ursprungsprozessoren, auf denen bedingte Befehle nicht angeboten sind, solche If-Anweisungen übersetzt, wie in 5 unter 510 dargestellt ist.
  • In K. Ebcioglu, E. Altmann: Dasy: Dynamic Compilation for 100% Architectural Compatibility; 24th Annual International Symposium on Computer Architecture; Denver, Colorado, June 1997, pp. 26-37 und S. Sathaye et al.: BOA: Targeting Multi-Gigahertz With Binary Translation; Binary '99 sind Verfahren veröffentlicht, die auf der zwischenzeitlichen Erzeugung von sogenannten Baumbefehlen basieren.
  • Andere Verfahren analysieren den Programmfluß, um in ihm bestimmte Muster zu erkennen, die dann umgewandelt werden, so z. B. in S. Mahlke et al.: Effective Compiler Support for Predicated Execution Using the Hyperblock; SIGMICRO 23, 1-2, 1992, pp. 45-54.
  • Der Erfindung liegt nunmehr die Aufgabe zugrunde, bei der Übersetzung von Objektcode für eine Prozessorarchitektur, die außer Sprungbefehlen keine bedingten Befehle kennt, in Objektcode für eine Prozessorarchitektur, die bedingte Befehle kennt, effizient bedingte Befehle zu generieren.
  • Diese Aufgabe wird erfindungsgemäß mit den in Patentanspruch 1 angegebenen Merkmalen gelöst.
  • Das aufgezeigte Verfahren zeichnet sich gegenüber den bisher bekannten Verfahren dadurch aus, daß die Umwandlung bedingter Sprünge in Folgen bedingter Befehle ohne Sprungbefehle besonders effizient geschieht, nämlich ohne nennenswerten Zeitaufwand während der Übersetzung. Insbesondere ist kein eigener Lauf wie z. B. zur Analyse des Programmflusses und keine komplizierte Datenstruktur, wie bei der Generierung von Baumbefehlen, erforderlich.
  • Weitere vorteilhafte Ausgestaltungen sind in den Unteransprüchen angegeben.
  • Nachfolgend wird die Erfindung unter Bezugnahme auf die Zeichnungen anhand von Ausführungsbeispielen im einzelnen erläutert.
  • Es zeigen
  • 1 ein Beispiel einer dynamischen Objektcodeübersetzung,
  • 2 die Struktur eines bedingten Befehls,
  • 3 ein erfindungsgemäßes Ausführungsbeispiel der Steuerung der Übersetzung,
  • 4 die Anordnung eines „stack" von Prädikaten und ihrer Gültigkeit,
  • 5 ein Übersetzungsbeispiel für einen "If-Then-Else"-Befehl,
  • 6 ein Übersetzungsbeispiel für "ein bedingtes Überspringen des Else-Teils",
  • 7 ein Übersetzungsbeispiel eines "geschachtelten If",
  • 8 ein Übersetzungsbeispiel für Zielarchitekturen, die der IA-64-Architektur ähnlich sind und
  • 9 ein Übersetzungsbeispiel für einen "unbedingten Sprung im Then-Teil".
  • Die Erfindung geht davon aus, daß der Objektcode-Übersetzer Befehl für Befehl des ursprünglichen Objektcodes liest, decodiert und dann in eine Befehlssequenz für die Zielarchitektur übersetzt. Üblicherweise wird die Befehlssequenz für die Zielarchitektur zunächst in einer internen Zwischenform erzeugt, um auf dieser Form noch weitere Optimierungen durchführen zu können. Erst dann wird aus der optimierten Form der eigentliche Objektcode für die Zielarchitektur generiert. Ob aber zunächst eine Zwischenform oder direkt der Objektcode für die Zielarchitektur erzeugt wird, ist für die Erfindung belanglos.
  • Ebenso kann der Objektcode-Übersetzer die Befehle für die Ursprungsarchitektur zunächst in eine interne Zwischenform überführen. Der erfindungsgemäße Objektcode-Übersetzer würde dann diese Zwischenform Befehl für Befehl lesen und die Befehle für die Zielarchitektur bzw. eine zweite Zwischenform übersetzen.
  • Anhand von 3 wird nachfolgend die Funktion des erfindungsgemäßen Übersetzers erläutert.
  • Bei jedem zu übersetzendem Befehl wird ein aktuell gültiges Prädikat p sowie seine Gültigkeit g mitgeführt, wobei die Gültigkeit die letzte Befehlsadresse im Ursprungscode ist, für die das Prädikat noch gilt. Das Prädikat p weist zu Beginn einer Übersetzung 301 den konstanten Wert p0 = "wahr" auf, kann aber im Laufe der Übersetzung auch eine Variable, z. B. der Inhalt eines Prädikatregisters pi, sein. Diese Situation ist in 5 dargestellt, wobei bei 510 der ursprüngliche Code, 520 der generierte Code und 530 die Befehl für Befehl mitgeführten Werte p, g dargestellt sind. Ein weiteres Beispiel zeigt 6.
  • Alle Befehle, die der Objektcode-Übersetzer für die Zielarchitektur generieren will, werden nun in der Regel als bedingte Befehle mit dem Prädikat p generiert (310, Beispiele 520, 620). Nach der Übersetzung eines Befehls, dessen Adresse pc mit g übereinstimmt 311, wird p auf p0 in 312 zurückgesetzt (siehe 533 in 5). Alternativ kann die Gültigkeit auch als Gültigkeitsdauer, also als Anzahl der Befehle, für die das Prädikat noch gilt, geführt werden. Dann müssen nach jedem übersetzten Befehl, falls p ≠ p0 ist, diese Gültigkeitsdauer um 1 erniedrigt, und falls 0 erreicht wird, p = p0 gesetzt werden.
  • Bei der Übersetzung eines bedingten Sprungs 303 wird geprüft, ob das Sprungziel eine kurze Distanz d in Vorwärtsrichtung vom aktuellen Befehl entfernt liegt (kurze Vorwärtssprünge). Falls d kleiner als ein fest eingestellter Schwellwert s ist, wird für den bedingten Sprung kein Code direkt generiert. Statt dessen wird ein Code 305 (Beispiel 521 in 5) generiert, der das Komplement der Sprungbedingung c in ein Prädikatregister lädt und dieses Prädikatregister in p vermerkt. Die Gültigkeit g wird auf die Befehlsadresse unmittelbar vor dem Sprungziel gesetzt (Beispiel 531 in 5). War bei der Übersetzung des bedingten Sprungs 313 bereits p ≠ p0, so wird wie folgt verfahren: In 304 (Beispiel 631 in 6) ist g = pc, der aktuelle Sprungbefehl, also der letzte Befehl, für den das bisherige Prädikat p noch gilt, dann werden Befehle generiert, die in ein neues Prädikatregister die Oder-Verknüpfung ~p ∨ ~c laden. Dies kann z. B. mit einem einzigen "Not And-Befehl" geschehen, wie in 621 in 6 dargestellt ist. In p wird das neue Prädikatregister und in g seine Gültigkeit, nämlich der Adresse des Befehls unmittelbar vor dem neuen Sprungziel, vermerkt, wie in 306 (Beispiel 632 in 6) angegeben ist. Weitere Befehle werden für den bedingten Sprung nicht generiert.
  • In allen anderen Fällen wird der bedingte Sprung wie üblich in einen bedingten Sprung der Zielarchitektur übersetzt 310, dabei wird gegebenenfalls die Sprungbedingung mit dem Prädikat p verknüpft, falls dieses ≠ p0 ist.
  • Bei der Übersetzung eines unbedingten Sprungs wird in 307 ebenfalls geprüft, ob es sich um einen kurzen Vorwärtssprung mit der Distanz d < s handelt. Falls in 308 (Beispiel 532 in 5) p ≠ p0 und g = pc ist, wird p komplementiert, d.h. p = ~p, und g auf die Adresse des Befehls unmittelbar vor dem neuen Sprungziel gesetzt, wie in 309 (Beispiel 522 in 5) angegeben, und es werden keine weiteren Befehle generiert. Dies entspricht dann dem "Else-Teil" einer Verzweigung. Anderenfalls wird in 310 der unbedingte Sprung wie üblich übersetzt, gegebenenfalls in einen bedingten Sprung mit Prädikat p, falls dieses nicht p0 ist (siehe Beispiel 921 in 9).
  • Nachfolgend werden weitere Ausgestaltungen der Erfindung erläutert. Manche Zielprozessorarchitekturen, wie beispielsweise die des IA-64, sehen vor, daß Vergleichsbefehle ihre Ergebnisse, wie in Beispiel 821 in 8 dargestellt, in gleich zwei Prädikatregistern hinterlegen. In der Regel ist das erste Prädikatregister p1 das Vergleichsergebnis und das zweite Prädikatregister p2 das Komplement ~p1. In diesem Fall führt ein erfindungsgemäßer Objektcode-Übersetzer beide Prädikatregister mit, wie in 830 in 8 dargestellt ist. Damit erübrigt sich die Generierung von Befehlen zur Komplementbildung p = ~p bei der Übersetzung unbedingter Sprünge. Statt dessen werden einfach p und ~p vertauscht, wie in 831 in 8 für diesen Fall dargestellt ist.
  • Desweiteren gestatten solche Zielarchitekturen unter Umständen auch, in Vergleichsbefehlen logische Verknüpfungen mit einem anderen Prädikat durchzuführen. Dies kann zur Generierung der Verknüpfung ~p ∨ ~c bei der Übersetzung bedingter Sprünge gewinnbringend ausgenutzt werden, da dann diese Verknüpfung gleich durch den vorausgehenden Vergleichsbefehl ausgeführt werden kann und somit keine eigenen Befehle generiert werden müssen.
  • In einer weiteren Ausgestaltung der Erfindung werden mehrere Prädikate "stackartig" verwaltet. Hierzu führt der Übersetzer nicht nur ein Prädikat und seine Gültigkeitsdauer, sondern mehrere Prädikate mit ihrer Gültigkeitsdauer in einem Stack 400 mit, wie in 4 dargestellt ist. p, g ist dann der oberste Eintrag 410 in diesem Stack, mit dem bei der Übersetzung gewöhnlicher Befehle, wie oben beschrieben, verfahren wird. In 7 ist hierzu ein Beispiel dargestellt, wobei in 730 jeweils nur die obersten Einträge des Stacks dargestellt sind.
  • Der erste Eintrag 420 in dem Stack, der zu Beginn einer Übersetzung angelegt wird, ist (p0, 0). Wenn ein bedingter kurzer Vorwärtssprung übersetzt wird, so wird ein neuer Eintrag 410 (p, g) auf den Stack gelegt (siehe Beispiel 731 in 7). Das neue Prädikat p ist dabei die Verknüpfung des bisherigen Prädikats mit der Sprungbedingung. Dabei wird darauf geachtet, daß die Gültigkeit g nicht größer ist als die Gültigkeit des bisher obersten Eintrags auf dem Stack. Dieses gewährleistet, daß die Bereiche, für die die Prädikate gelten, echt ineinander geschachtelt sind und daß diese Schachtelung mit der Ablage der Einträge auf dem Stack konform ist. Ist diese Schachtelungsbedingung nicht erfüllt, wird für den bedingten Sprung ein normaler bedingter Sprungbefehl der Zielarchitektur generiert.
  • Wenn der letzte Befehl, für den das oberste Prädikat auf dem Stack gültig ist, also pc = g, übersetzt ist, wird der oberste Eintrag des Stacks entfernt und der vorherige Eintrag wird wieder gültig, wie in Beispiel 731 in 7 dargestellt ist. Auf diese Weise lassen sich auch geschachtelte "If-Then-Else-Strukturen" effektiv und effizient behandeln.
  • Insbesondere für VLIW- und EPIC-Architekturen ist es in vielen Fällen sinnvoll, für große oder für unbalancierte "If-Then-Else-Strukturen" z. B.:
    Figure 00080001
    ebenfalls wenigstens teilweise mit bedingten Befehlen zu übersetzen:
    Figure 00080002
  • Dies läßt sich mit der folgenden Variante der vorliegenden Erfindung realisieren: Wenn bei einem bedingten Vorwärtssprung b die Distanz d größer als der vorgewählte Schwellwert s ist, wird dennoch ein Prädikat p gesetzt, das für die nächsten s-Befehle gültig sein soll, also g = pc + s, und es wird zunächst kein Sprungbefehl generiert. Es wird jetzt aber zu sätzlich vermerkt, daß am Ende der Gültigkeit des Prädikats p noch der mit ~p bedingte Sprung b abzusetzen ist. In dieser Variante merkt sich der Objektcode-Übersetzer also jeweils ein Triple aus Prädikat p, Gültigkeit g und abschließendem Befehl b, in dem im Normalfall b ein Nullbefehl (NOP) ist. Endet die Gültigkeit von (p, g, b) mit einem weiteren kurzen Vorwärtssprung, so kann die Generierung von b weiter aufgeschoben werden, indem einfach b in das Triple für den neuen Vorwärtssprung übernommen wird. So entsteht schließlich der in obigem Beispiel vorgestellte Zielcode.
  • Bietet der Zielprozessor nicht generell jeden Befehl als bedingten Befehl an, so kann die bedingte Ausführung dadurch nachgebildet werden, daß zunächst ein unbedingter Befehl generiert wird, der sein Ergebnis in einem sonst nicht verwendeten Hilfsregister liefert. Dann kann ein bedingter Kopierbefehl nachgeschoben werden, der – bei wahrem Prädikat p – den Inhalt des Hilfsregisters in das endgültige Ergebnisregister überträgt. Diese Nachbildung ist für alle Befehle möglich, die keine Ausnahme auslösen können. Dies sind in der Regel die meisten Befehle. Für Ladebefehle bieten viele Prozessoren spekulative Varianten an, die bei ungültiger Adresse keine Ausnahme auslösen. Damit können auch für Ladebefehle Bedingungen auf diese Weise nachgebildet werden. Lediglich für Befehle, die Speicher verändern würden, ist eine derartige Nachbildung nicht möglich.
  • In einigen Befehlen steht zur Übersetzungszeit ein Ablaufprofil zur Verfügung, aus dem z. B. für bedingte Sprünge das Verhältnis, wie oft die Bedingung "wahr" und wie oft sie "falsch" ist, ermittelt werden kann. Nach dem heutigen Stand der Technik beginnt nämlich eine Emulation einer Prozessorarchitektur oft mit einer reinen Interpretation der Befehle der Ursprungsarchitektur, während der unter anderem auch ein Ablaufprofil erstellt wird. Erst dann, wenn ein Codestück mehrfach interpretiert wurde, wird es mit dem dynamischen Objektcode-Übersetzer in Code für die Zielarchitektur übersetzt.
  • Wenn also ein Ablaufprofil und damit das Verhältnis r = "wahr":"falsch" für Sprungbedingungen vorliegt, kann der Schwellwert s dynamisch angepaßt werden. Es ist nämlich vorteilhaft, für bedingte Vorwärtssprünge, deren Sprungbedingung häufig "falsch" ist, einen größeren Schwellwert s und für Vorwärtssprünge, deren Sprungbedingungen häufig "wahr" ist, einen kleineren Wert für s zu wählen. Es kann beispielsweise für s = s0 – r·s1 für geeignete Konstanten s0 und s1 gesetzt werden. Aber jede andere, auch nicht lineare, Abhängigkeit ist denkbar.

Claims (10)

  1. Verfahren zum Umsetzen eines Objektcodes für einen ersten Prozessor in einen Objektcode eines zweiten Prozessors, der neben Sprungbefehlen noch Befehle mit Prädikat als weitere bedingte Befehle kennt, – bei dem der jeweils nächste Befehl des Objektcodes des ersten Prozessors analysiert und in den Objektcode des zweiten Prozessors umgesetzt wird, dadurch gekennzeichnet, daß – die Umsetzung des Objektcodes für den ersten Prozessor in den Objektcode des zweiten Prozessors in einem einzigen Lauf über die Befehle für den ersten Prozessor erfolgt, – ein aktuelles Prädikat mit einer Gültigkeitsdauer definiert wird, wobei das Prädikat den Wert "wahr" oder einen Verweis auf ein Prädikatregister einnehmen kann und die Gültigkeitsdauer eine Befehlsadresse im Objektcode des ersten Prozessors ist, – das aktuelle Prädikat zunächst auf den Wert "wahr" mit unbegrenzter Gültigkeitsdauer gesetzt wird, – beim Analysieren des nächsten Befehls überprüft wird, ob ein bedingter Vorwärtssprung zu einem Sprungziel vorliegt, – wobei bei einem Vorliegen eines bedingten Vorwärtssprunges das aktuelle Prädikat als Verweis auf ein Prädikatregister mit der Befehlsadresse unmittelbar vor dem Sprungziel als Gültigkeitsdauer gesetzt wird, und – bei einem Nichtvorliegen eines Vorwärtssprungbefehls der Befehl in einen bedingten Befehl oder eine zugeordnete Folge von bedingten Befehlen für den zweiten Prozessor umgesetzt wird, die allein durch den jeweiligen Befehl im Objektcode des ersten Prozessors bestimmt sind, wobei als Bedingung das aktuelle Prädikat eingesetzt wird.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Gültigkeit des Prädikates bis zu einer Befehlsadresse unmittelbar vor dem Sprungziel des Vorwärtssprungbefehls dauert, und wobei danach das Prädikat dann auf "wahr" gesetzt wird.
  3. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß bei Vorliegen eines bedingten Vorwärtssprungbefehls zu einem Sprungziel, dessen Distanz zum Sprungbefehl kleiner als ein vorgegebener Schwellwert ist, und „wahr" als das aktuell gültige Prädikat, das Prädikat als Komplement der Sprungbedingung neu bestimmt und sein Gültigkeitsbereich bis zu einer Befehlsadresse unmittelbar vor dem Sprungziel gesetzt wird.
  4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß bei Vorliegen eines bedingten Vorwärtssprungbefehls zu einem Sprungziel, dessen Distanz zum Sprungbefehl kleiner als ein vorgegebener Schwellwert ist, und dem aktuell gültigen Prädikat verschieden von „wahr", das Prädikat durch logisches Verknüpfen der Sprungbedingung mit dem aktuell gültigen Prädikat neu bestimmt und der Gültigkeitsbereich bis zu der Befehlsadresse unmittelbar vor dem Sprungziel gesetzt wird.
  5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß bei Vorliegen eines unbedingten Vorwärtssprungs zu einem Sprungziel, dessen Distanz zum Sprungbefehl kleiner als ein vorgegebener Schwellwert ist, als letzter Befehl im Gültig keitsbereich des von „wahr" verschiedenen aktuellen Prädikates, das Prädikat als Komplement des aktuell gültigen Prädikats neu bestimmt und der Gültigkeitsbereich bis zur Befehlsadresse unmittelbar vor dem Sprungziel gesetzt wird.
  6. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß ein Stack aktuell gültiger Prädikate geführt wird, wobei neue Prädikate oben auf den Stack gelegt werden und bei Erreichen des Endes der Gültigkeit des an oberster Stelle auf dem Stack liegenden Prädikats dieses vom Stack entfernt wird.
  7. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß neben dem aktuell gültigen Prädikat auch sein Komplement mitgeführt wird, wobei bei Vorliegen eines unbedingten Vorwärtssprungbefehls als letztem Befehl im Gültigkeitsbereich des von „wahr" verschiedenen aktuellen Prädikats und bei einer Distanz des Sprungziels zum Sprungbefehl kleiner als einem vorgegebenen Schwellwert, das Prädikat mit seinem Komplement vertauscht und der Gültigkeitsbereich bis zu der Befehlsadresse unmittelbar vor dem Sprungziel neu gesetzt wird.
  8. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß anstelle bedingter Befehle zunächst für den zweiten Prozessor Befehle generiert werden, die ihre Ergebnisse in Hilfsregistern bereitstellen und dann bedingte Kopierbefehle generiert werden, die, falls das Prädikat auf „wahr" gesetzt ist, die Inhalte dieser Hilfsregister in die umgesetzten Register übertragen.
  9. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß auch für einen bedingten Vorwärtssprung zu einem Sprungziel, dessen Distanz zum Sprungbefehl größer als ein vorgegebener Schwellwert ist, das Prädikat gesetzt wird, dessen Gültigkeit jedoch auf eine durch einen Schwellwert festgelegte Anzahl von Folgebefehlen begrenzt wird, wobei neben dem Prädikat und seinem Gültigkeitsbereich auch das Sprungziel des Vorwärtssprunges vermerkt wird und bei Erreichen des Endes des Gültigkeitsbereiches des Prädikats ein bedingter Sprungbefehl mit dem Prädikat als Sprungbedingung und dem vermerkten Sprungziel erzeugt wird.
  10. Verfahren nach Anspruch 9, dadurch gekennzeichnet, daß für die Übersetzung eines bedingten Sprungbefehls eine Abschätzung des beim Ablauf erwarteten Verhältnisses „wahr"/„falsch" für die Sprungbedingung vorliegt und dieses Verhältnis für eine von Sprungbefehl zu Sprungbefehl individuelle Einstellung des Schwellwertes herangezogen wird.
DE10111461A 2001-03-09 2001-03-09 Verfahren zum Umsetzen eines Objektcodes für einen ersten Prozessor in einen Objektcode eines zweiten Prozessors Expired - Fee Related DE10111461B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE10111461A DE10111461B4 (de) 2001-03-09 2001-03-09 Verfahren zum Umsetzen eines Objektcodes für einen ersten Prozessor in einen Objektcode eines zweiten Prozessors

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10111461A DE10111461B4 (de) 2001-03-09 2001-03-09 Verfahren zum Umsetzen eines Objektcodes für einen ersten Prozessor in einen Objektcode eines zweiten Prozessors

Publications (2)

Publication Number Publication Date
DE10111461A1 DE10111461A1 (de) 2002-09-26
DE10111461B4 true DE10111461B4 (de) 2005-08-11

Family

ID=7676922

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10111461A Expired - Fee Related DE10111461B4 (de) 2001-03-09 2001-03-09 Verfahren zum Umsetzen eines Objektcodes für einen ersten Prozessor in einen Objektcode eines zweiten Prozessors

Country Status (1)

Country Link
DE (1) DE10111461B4 (de)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0899653A2 (de) * 1997-08-29 1999-03-03 Matsushita Electric Industrial Co., Ltd. Prozessor mit verringerter Zahl von bedingten Befehlen
US5995746A (en) * 1990-06-29 1999-11-30 Digital Equipment Corporation Byte-compare operation for high-performance processor
WO2000028415A2 (de) * 1998-11-11 2000-05-18 Fujitsu Siemens Computers Gmbh Verfahren zum dynamischen umsetzen und ausführen von objektcode

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5995746A (en) * 1990-06-29 1999-11-30 Digital Equipment Corporation Byte-compare operation for high-performance processor
EP0899653A2 (de) * 1997-08-29 1999-03-03 Matsushita Electric Industrial Co., Ltd. Prozessor mit verringerter Zahl von bedingten Befehlen
US6230258B1 (en) * 1997-08-29 2001-05-08 Matsushita Electric Industrial Co., Ltd. Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions
WO2000028415A2 (de) * 1998-11-11 2000-05-18 Fujitsu Siemens Computers Gmbh Verfahren zum dynamischen umsetzen und ausführen von objektcode

Also Published As

Publication number Publication date
DE10111461A1 (de) 2002-09-26

Similar Documents

Publication Publication Date Title
EP0502857B1 (de) Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems
DE19815865B4 (de) Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen
DE112012000303B4 (de) Dynamische binäre Optimierung
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
EP1738257B1 (de) Verfahren zum vermeiden von dateninkonsistenz zwischen zugriffen verschiedener funktionen einer anwendung auf eine globale variable in einer datenverarbeitungsanlage
WO1994022079A1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE19945992A1 (de) Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren
EP1497722B1 (de) Optimierung von compilergeneriertem programmcode
DE202016007893U1 (de) Systeme zum Entfernen von PLT-Stubs aus dynamisch verknüpften Binärdateien
DE10111461B4 (de) Verfahren zum Umsetzen eines Objektcodes für einen ersten Prozessor in einen Objektcode eines zweiten Prozessors
WO1999012094A1 (de) Verfahren zum umsetzen eines objektcodes in einen programmcode
EP0910825A1 (de) Verfahren zur migration von programmen mit portierbaren und nicht-portierbaren programmteilen
EP1609061A2 (de) Verfahren und anordnung zur veränderung von software oder quellcode
WO2020177994A1 (de) Verfahren zum erzeugen einer darstellung einer programmlogik, dekompiliervorrichtung, rekompiliersystem und computerprogrammprodukt
WO1997042574A1 (de) Verfahren zur codetransformation
EP1668494B1 (de) Verfahren und system zur sprachkonfigurierung eines computerprogramms
DE102004022183B4 (de) Verfahren zum Ändern von Programmobjektcode bei Quelltextänderungen
DE10308867B4 (de) Verfahren zur Adressierung von Adressräumen bei der Emulation eines für einen emulierten Prozessor erstellten Programms auf einem emulierenden Prozessor
DE102004056006B3 (de) Verfahren zur Emulation eines für einen Ursprungsprozessor in einem Ursprungscode erstellten Programms auf einem Zielprozessor
DE102008044808B4 (de) Verfahren zur Generierung von Programmcode in einem Betriebssystemspeicher und einem Applikationsspeicher eines Datenträgers
DE2613703C2 (de) Schaltungsanordnung zum Übersetzen von Programmtexten
DE10152729A1 (de) Verfahren zum Betrieb eines Rechnersystems
DE102022125248A1 (de) Prozessor und Computer mit mindestens einem Prozessor mit vorzeitiger Programmvariantenauswahl bei noch unbekannten Vergleichsergebnissen
DE10141799A1 (de) Verfahren zum Betrieb eines Rechnersystems
WO2000028415A2 (de) Verfahren zum dynamischen umsetzen und ausführen von objektcode

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R084 Declaration of willingness to licence
R081 Change of applicant/patentee

Owner name: FUJITSU TECHNOLOGY SOLUTIONS INTELLECTUAL PROP, DE

Free format text: FORMER OWNER: FUJITSU SIEMENS COMPUTERS GMBH, 80807 MUENCHEN, DE

Effective date: 20111229

R082 Change of representative

Representative=s name: EPPING HERMANN FISCHER, PATENTANWALTSGESELLSCH, DE

Effective date: 20111229

Representative=s name: EPPING HERMANN FISCHER PATENTANWALTSGESELLSCHA, DE

Effective date: 20111229

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009450000

Ipc: G06F0008400000