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 PDFInfo
- 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
Links
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/52—Binary to binary
Abstract
– 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 in1 dargestellt ist. Die Übersetzung wird so lange fortgesetzt, bis ein Sprungbefehl101 erreicht wird, dessen Sprungziel nicht statisch bekannt ist, sondern erst bei Ablauf des Programms berechnet wird. Sobald ein Programmstück in Objektcode110 für den Zielprozessor übersetzt ist, wird es auf dem Zielprozessor ausgeführt. Wenn bei dieser Ausführung dann ein Sprungbefehl101 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 in2 beispielhaft dargestellt sind. Bedingte Befehle200 haben neben den Feldern für den Befehlscode201 , Operanden203 ,204 und Ergebnis205 ein weiteres Feld202 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 Maschinenbefehlen520 übersetzt, wie in5 zu sehen ist. Demgegenüber werden auf den Ursprungsprozessoren, auf denen bedingte Befehle nicht angeboten sind, solche If-Anweisungen übersetzt, wie in5 unter510 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 in5 dargestellt, wobei bei510 der ursprüngliche Code,520 der generierte Code und530 die Befehl für Befehl mitgeführten Werte p, g dargestellt sind. Ein weiteres Beispiel zeigt6 . - 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 , Beispiele520 ,620 ). Nach der Übersetzung eines Befehls, dessen Adresse pc mit g übereinstimmt311 , wird p auf p0 in312 zurückgesetzt (siehe533 in5 ). 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 Code305 (Beispiel521 in5 ) 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 (Beispiel531 in5 ). War bei der Übersetzung des bedingten Sprungs313 bereits p ≠ p0, so wird wie folgt verfahren: In304 (Beispiel631 in6 ) 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 in621 in6 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 in306 (Beispiel632 in6 ) 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 in308 (Beispiel532 in5 ) 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 in309 (Beispiel522 in5 ) angegeben, und es werden keine weiteren Befehle generiert. Dies entspricht dann dem "Else-Teil" einer Verzweigung. Anderenfalls wird in310 der unbedingte Sprung wie üblich übersetzt, gegebenenfalls in einen bedingten Sprung mit Prädikat p, falls dieses nicht p0 ist (siehe Beispiel921 in9 ). - 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 in8 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 in830 in8 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 in831 in8 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 in4 dargestellt ist. p, g ist dann der oberste Eintrag410 in diesem Stack, mit dem bei der Übersetzung gewöhnlicher Befehle, wie oben beschrieben, verfahren wird. In7 ist hierzu ein Beispiel dargestellt, wobei in730 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 Eintrag410 (p, g) auf den Stack gelegt (siehe Beispiel731 in7 ). 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 in7 dargestellt ist. Auf diese Weise lassen sich auch geschachtelte "If-Then-Else-Strukturen" effektiv und effizient behandeln. -
- 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)
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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 |
-
2001
- 2001-03-09 DE DE10111461A patent/DE10111461B4/de not_active Expired - Fee Related
Patent Citations (4)
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 |