DE19617842A1 - Verfahren zur Codetransformation - Google Patents
Verfahren zur CodetransformationInfo
- Publication number
- DE19617842A1 DE19617842A1 DE19617842A DE19617842A DE19617842A1 DE 19617842 A1 DE19617842 A1 DE 19617842A1 DE 19617842 A DE19617842 A DE 19617842A DE 19617842 A DE19617842 A DE 19617842A DE 19617842 A1 DE19617842 A1 DE 19617842A1
- Authority
- DE
- Germany
- Prior art keywords
- code
- object code
- hardware
- transformed
- address
- 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.)
- Ceased
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
Die Erfindung betrifft ein Verfahren zur Transformation von
hardwarespezifischem Programmcode in auf einer anderen Hard
ware mit einer unterschiedlichen Rechnerarchitektur ablauf
fähigen Programmcode.
Die Architektur eines Rechners ist vor allem durch die grund
legende Struktur seines Prozessors, also durch die Anzahl und
Größe der Register, die verwendeten Datentypen, die unter
stützten arithmetischen und logischen Operationen usw., ge
kennzeichnet. Bei heutigen Hochleistungsrechnern, z. B. bei
Parallelrechnern, kommt dabei auch oft nicht nur ein einzel
ner Prozessor, sondern ein ganzer Satz meist untereinander
gleichartiger Prozessoren zum Einsatz. In der Regel wird die
Architekturdefinition eines Rechners durch seinen Befehlssatz
beschrieben, der alle elementaren Instruktionen des zugrundeliegenden
Prozessors umfaßt.
Viele der heute eingesetzten Rechner besitzen sog. CISC-
Prozessoren, die über einen umfangreichen Befehlssatz mit
teilweise sehr komplexen und leistungsfähigen Einzelbefehlen
verfügen (CISC = Complex Instruction Set Computer). Dabei
treten auch oft Befehle auf, die zeitaufwendige Speicher-
Speicher-Operationen durchführen. Außerdem weisen die In
struktionen in der Regel untereinander deutlich unterschied
liche Längen und Ausführungszeiten auf.
In zunehmendem Maße kommen jedoch in modernen Computern auch
sog. RISC-Prozessoren (RISC = Reduced Instruction Set Compu
ter) zum Einsatz. Ihr Befehlssatz ist in bezug auf Anzahl,
Komplexität und Leistungsfähigkeit der einzelnen Instruktio
nen gegenüber einem CISC-Befehlssatz deutlich reduziert und
alle arithmetischen und logischen Operationen werden ohne Be
teiligung des Speichers von Register zu Register durchge
führt. Als Speicherzugriffe sind nur einfache Lade-/Speicher-
Operationen zugelassen und alle Instruktionen sind in der Re
gel gleich lang.
Zu Zeiten, als Prozessoren wesentlich schneller als Speicher
bausteine waren, hatten CISC-Prozessoren meist deutliche Vor
teile gegenüber RISC-Prozessoren, da sie im Schnitt weniger
Instruktionen benötigen, um die gleiche Aufgabe auszuführen.
Heutige Halbleiterspeicher sind jedoch schnell genug, um War
tezeiten für den Prozessor weitgehend zu vermeiden. Außerdem
spielt der für RISC-Code gegenüber äquivalentem CISC-Code im
Schnitt höhere Speicherbedarf keine bedeutende Rolle mehr.
Dadurch kommen zunehmend die Herstellungs- und vor allem Per
formance-Vorteile von Rechnern mit RISC-Architektur zum tra
gen.
Die zunehmenden Anforderungen an das Leistungsvermögen von
Rechenanlagen jeder Größenordnung machen vielfach den Wechsel
zu neuen Computergenerationen, z. B. zu RISC-Computern, erfor
derlich. Um jedoch die höhere Leistungsfähigkeit dieser Rech
ner ausnützen zu können, ohne dabei auf die bereits vorhande
ne, umfangreiche und wertvolle Softwarebasis verzichten zu
müssen, ist eine Transformation der vorhandenen Programme für
Betriebssysteme, Anwendungen, Sprachcompiler etc. nötig. Die
im Quellcode einer standardisierten Hochsprache vorliegenden
Teile dieser Programme können meist durch einfache Neucompi
lierung auf dem im folgenden als Zielhardware bezeichneten
neuen Rechner transformiert werden. Dagegen machen die hard
wareabhängigen, z. B. in Assemblersprache geschriebenen Pro
grammteile eine wesentlich aufwendigere Transformation erfor
derlich, die zumindest weitgehend mit Hilfe von spezieller
Transformationssoftware automatisiert sein muß, um unverhält
nismäßigen Aufwand an Zeit und Kosten zu vermeiden.
Die Verwendung von Emulationsprogrammen, die die Ursprungs
hardware auf der Zielhardware simulieren, kommt in der Regel
wegen der vergleichsweise schlechten Performance der Software
unter einer Emulation höchstens für nicht zeitkritische Pro
grammteile in Frage.
Bisher verwendete Programme zur Transformation von für eine
Ursprungshardware geschriebenem Programmcode in auf einer
Zielhardware mit einer unterschiedlichen Rechnerarchitektur
ablauffähigen Programmcode arbeiten in der Regel nach einer
der folgenden Transformationsmethoden:
Ausgangspunkt bei einer statischen Objektcodetransformation - z. B. nach WO 92/15939 - ist ein als Objektcode für die Ur sprungshardware vorliegender Programmcode, für den die Be schränkung gilt, daß bereits während der Transformation alle Befehlsfolgen und Sprungziele vollständig bekannt und defi niert sein müssen. Berechnete, nicht-symbolische Sprünge und Adressierungen (z. B. Adressierung anhand von Basisregistern bei IBM System/370-Rechnern) oder auch Befehle, die ein be liebiges, z. B. erst beim Programmablauf erzeugtes oder einge lesenes Bitmuster als Befehlsfolge interpretieren, sind daher zumindest nicht in voller Allgemeinheit transformierbar. Au ßerdem werden bei der statischen Objektcodetransformation Kriterien benötigt, mit denen Befehle und Daten im Eingangs code gegeneinander abgegrenzt werden können.
Ausgangspunkt bei einer statischen Objektcodetransformation - z. B. nach WO 92/15939 - ist ein als Objektcode für die Ur sprungshardware vorliegender Programmcode, für den die Be schränkung gilt, daß bereits während der Transformation alle Befehlsfolgen und Sprungziele vollständig bekannt und defi niert sein müssen. Berechnete, nicht-symbolische Sprünge und Adressierungen (z. B. Adressierung anhand von Basisregistern bei IBM System/370-Rechnern) oder auch Befehle, die ein be liebiges, z. B. erst beim Programmablauf erzeugtes oder einge lesenes Bitmuster als Befehlsfolge interpretieren, sind daher zumindest nicht in voller Allgemeinheit transformierbar. Au ßerdem werden bei der statischen Objektcodetransformation Kriterien benötigt, mit denen Befehle und Daten im Eingangs code gegeneinander abgegrenzt werden können.
Eine Assemblertransformation unterscheidet sich von der o.g.
statischen Objektcodetransformation dadurch, daß anstatt von
Objektcode mnemonisch angegebener Assemblercode als Quellcode
für die Transformation dient, wodurch weitgehend eine klare
Unterscheidung von Befehlen und Daten sowie von symbolischen
und absoluten Sprüngen erreicht wird.
Beide bisher genannten Transformationsverfahren erzeugen
durch Übersetzung des jeweiligen Programmcodes für eine Ur
sprungshardware entsprechenden Programmcode für eine gegebene
Zielhardware, der darauf jedoch erst nach der vollständigen
Transformation aller Teile des Codes uneingeschränkt ausführ
bar ist.
Bei einer dynamischen Objektcodetransformation, wie sie z. B.
aus C.May: "MIMIC: A FAST SYSTEM/370 SIMULATOR", SIGPLAN 22,
7, 1987 bekannt ist, handelt es sich dagegen um eine Mischung
aus statischer Objektcodetransformation und Emulation. Dabei
wird ein Programm erst während seiner Ausführung durch Emula
tion auf der Zielhardware nach und nach transformiert. Bei
berechneten Sprüngen wird dynamisch anhand einer Adreßumsetz
tabelle überprüft, ob zu dem errechneten Sprungziel bereits
transformierter Code für die Zielhardware vorliegt. Ist dies
der Fall, so wird dieser Code direkt angesprungen. Anderen
falls wird der am Sprungziel vorgefundene Code für die Ur
sprungshardware zunächst dynamisch in Objektcode für die
Zielhardware transformiert und dann ausgeführt. Die dynami
sche Objektcodetransformation benötigt daher keine zusätzli
chen Informationen zur Unterscheidung von Befehlen und Daten
im Ausgangscode. Im Laufe der Zeit werden automatisch die Be
fehle transformiert, während die Daten unverändert übrigblei
ben. Befehle, die nicht eindeutig auf äquivalente Befehle
oder Befehlsfolgen der Zielhardware abgebildet werden können
werden durch Emulation abgearbeitet.
Anders als bei den o.g. statischen Codetransformationen, kön
nen berechnete Sprünge und Adressierungen, sowie auf der
Zielhardware unbekannte Befehle bei einer dynamischen Ob
jektcodetransformation behandelt werden. Von Nachteil ist je
doch, daß die Transformation erst während des Programmablau
fes erfolgt, wodurch sich deutliche Performance-Verluste er
geben können, bis zumindest die zeitkritischen oder häufig
durchlaufenen Programmteile als transformierter Code vorlie
gen. Auch die nötige Abspeicherung von neu transformiertem
Code während der Programmausführung sowie die z. B. bei Sprün
gen nötigen Prüfungen auf Vorhandensein von bereits transfor
miertem Code am jeweiligen Sprungziel kosten zusätzliche
Zeit.
Sowohl die bekannten statischen als auch die dynamischen Ver
fahren zu Codetransformation setzen außerdem beschränkend
voraus, daß der zu transformierende Code keine sich beim Ab
lauf selbst modifizierenden Programmteile enthält.
Die vorliegenden Erfindung stellt sich die Aufgabe ein gegen
über den bekannten statischen und dynamischen Transformati
onsmethoden verbessertes Verfahren zur Transformation von für
eine Ursprungshardware geschriebenem Programmcode in auf ei
ner Zielhardware mit einer unterschiedlichen Rechnerarchitek
tur ablauffähigen Programmcode anzugeben.
Die Aufgabe wird gelöst durch ein Verfahren zur Codetransfor
mation, das die im Patentanspruch 1 angegebenen Merkmale auf
weist.
Das erfindungsgemäße Verfahren zur Codetransformation verei
nigt die Vorteile einer Assemblertransformation mit denen ei
ner dynamischen Objektcodetransformation. Es geht von einem
als Assemblerquellcode vorliegendem Programmcode für eine Ur
sprungshardware aus und wird mit Hilfe eines Assemblers und
eines Codetransformators, die vorteilhafterweise in einem
Transformationsprogramm zusammengefaßt sind, durchgeführt.
Zunächst wird dabei durch den Assembler aus dem Assembler
quellcode Objektcode für die Ursprungshardware generiert, in
den auch im Assemblerquellcode enthaltene Datenfelder und
-konstanten übernommen werden. Durch den Codetransformator
wird aus dem Assemblerquellcode entsprechender Objektcode für
die Zielhardware sowie eine Adreßumsetztabelle, die die Be
ziehung zwischen Adressen im Objektcode für die Ursprungs
hardware und den zugehörigen Adressen im Objektcode für die
Zielhardware herstellt, generiert. Der auf der Zielhardware
ablauffähige Programmcode wird durch Zusammenfassung des Ob
jektcodes für die Ursprungshardware, des Objektcodes für die
Zielhardware, der Adreßumsetztabelle sowie eines Emulators,
der den Objektcode für die Ursprungshardware emulieren kann,
gewonnen.
Wesentlich ist dabei, daß sich die im transformierten Ob
jektcode verwendeten Adreßbezüge zunächst stets auf den Ob
jektcode für die Ursprungshardware beziehen. Adreßbezüge, die
auf Befehle verweisen, werden erst beim Ablauf des transfor
mierten Programms mit Hilfe der Adreßumsetztabelle in ent
sprechende Bezüge auf Adressen im Objektcode für die Ziel
hardware umgesetzt. Berechnete Sprünge und Adressierungen
sind daher anders als bei bekannten statischen Transformati
onsverfahren in voller Allgemeinheit transformierbar.
Befehle oder Befehlsfolgen, die erst während der Ausführung
des Codes vollständig definiert werden, wie das etwa bei In
struktionen, die ein beliebiges, z. B. erst beim Pro
grammablauf erzeugtes oder eingelesenes Bitmuster als Be
fehlsfolge interpretieren, der Fall ist, werden durch den
Codetransformator bei der Generierung des Objektcodes für die
Zielhardware in Aufrufe an den den entsprechenden Objektcode
für die Ursprungshardware emulierenden Emulator transfor
miert. Ebenso werden Befehle und Befehlsfolgen die im Assem
blerquellcode nicht als solche, sondern z. B. als Datenkon
stanten angegeben sind, in Emulatoraufrufe transformiert.
Die weiter oben genannten, bei einer dynamischen Codetrans
formation auftretenden Nachteile werden bei dem erfindungsge
mäßen Transformationsverfahren vermieden, da die Generierung
des auf der Zielhardware ablauffähigen Programmcodes in einem
Schritt durch das Transformationsprogramm und nicht erst nach
und nach im Zuge mehrerer emulierter Programmläufe des zu
transformierenden Codes erfolgt.
Vorteilhafte Aus- und Weiterbildungen des erfindungsgemäßen
Verfahrens sind Gegenstand der Unteransprüche.
Nach einer ersten Ausgestaltung des erfindungsgemäßen Verfah
rens - Anspruch 2 - wird bei der Codetransformation zumindest
eines der Register der Ursprungshardware umkehrbar eindeutig
auf ein Register der Zielhardware abgebildet. So ist es z. B.
zweckmäßig, zumindest die Register der Ursprungshardware, die
im Assemblerquellcode häufig oder für zeitkritische Programm
teile benutzt werden, auch im transformierten Programmcode
für die Zielhardware durch Register darzustellen, um auf die
se Weise kurzen und effektiven Code zu generieren.
Insbesondere wenn die Anzahl der Register entsprechender Größe
auf der Zielhardware nicht ausreicht, um damit alle Regi
ster der Ursprungshardware und zusätzlich die durch den Emu
lator oder als temporäre Register durch den transformierten
Objektcode OC2 verwendeten Register darzustellen, wird nach
einer zweiten Ausgestaltung der Erfindung - Anspruch 3 - bei
der Codetransformation zumindest eines der Register der Ur
sprungshardware auf der Zielhardware (M2) durch einen Spei
cherbereich nachgebildet wird.
Bei einer weiteren Ausbildung der Erfindung - Anspruch 4 -
erfolgen für alle Befehle und Datenfelder im Objektcode der
Ursprungshardware jeweils Einträge in der Adreßumsetztabelle,
wodurch die auf Befehle verweisenden Adressen im Objektcode
der Ursprungshardware auf entsprechende Adressen im transfor
mierten Objektcode abgebildet werden, während bei auf Daten
verweisenden Adressen das Fehlen von korrespondierendem
transformierten Objektcode angezeigt wird. Durch diese alle
Codeteile umfassenden Zuordnungsvorschrift wird durch Indi
zierung ein einfacher und schneller Zugriff auf die einzelnen
Tabelleneinträge erreicht, obwohl der sich daraus ergebende
Umfangs der Adreßumsetztabelle eine erhebliche Größe errei
chen kann.
Alternativ - Anspruch 5 - können die Einträge in der Adreß
umsetztabelle auch nur für die als mögliche Sprung- oder Zu
griffsziele relevanten Befehle im Objektcode der Ursprungs
hardware erfolgen. Von Vorteil ist dabei die in der Regel
deutliche Reduzierung des für die Adreßumsetztabelle benöti
gen Speicherbedarfs gegenüber der o.g. Ausgestaltung gemäß
Anspruch 4, bei der für alle Befehle und Daten Einträge in
die Tabelle erfolgen. Der Zugriff auf Tabelleneinträge erfor
dert in diesem Fall jedoch Suchverfahren (z. B. Binärsuche
oder Hash-Suche).
Nach einer weiteren Ausgestaltung des erfindungsgemäßen Ver
fahrens - Anspruch 6 - wird ein im Assemblerquellcode auftre
tender Sprungbefehl mit bekanntem Sprungziel durch den Code
transformator in einen entsprechenden Sprungbefehl im Ob
jektcode für die Zielhardware transformiert. Dabei ist die
Sprungzielangabe im transformierten Objektcode über die
Adreßumsetztabelle mit der entsprechenden Sprungzielangabe im
Objektcode für die Ursprungshardware verknüpft.
Ein im Assemblerquellcode auftretender Sprungbefehl mit einer
erst zur Laufzeit auswertbaren Sprungzielangabe wird dagegen
nach einer Weiterbildung der Erfindung - Anspruch 7 - durch
den Codetransformator in einen Emulatoraufruf im Objektcode
für die Zielhardware transformiert, der bei seiner Ausführung
bewirkt, daß der Emulator anhand der dann ausgewerteten
Sprungzielangabe und der Adreßumsetztabelle überprüft, ob zum
Sprungziel transformierter Objektcode für die Zielhardware
existiert. Im Fall der Existenz eines solchen transformierten
Objektcodes wird dieser daraufhin direkt angesprungen, wäh
rend anderenfalls die eigentliche Emulation des entsprechen
den Objektcodes der Ursprungshardware erfolgt. Auf diese Wei
se können mit dem erfindungsgemäßen Verfahren zur Codetrans
formation im Gegensatz zu bekannten statischen Transformati
onsverfahren auch Sprünge mit erst zur Laufzeit bestimmten
Sprungzielen, z. B. berechnete Sprünge, behandelt werden.
Bei einer vorteilhaften Weiterbildung der Erfindung zur Be
handlung von selbstmodifizierendem Code - Anspruch 8 - trans
formiert der Codetransformator jeden im Assemblerquellcode
auftretenden Speicherbefehl in Objektcode für die Zielhardwa
re, der bei seiner Ausführung die folgenden Schritte durch
führt:
Die auf die Ursprungshardware bezogene Speicheradresse wird berechnet und anhand der Adreßumsetztabelle wird geprüft, ob zu dieser Speicheradresse transformierter Objektcode exi stiert. Wenn dies der Fall ist, wird der transformierte Ob jektcode an dieser Stelle durch eine Befehlssequenz zum Auf ruf des Emulators ersetzt, und die Adreßumsetztabelle wird so abgewandelt, daß das Auftreten eines Sprunges in den durch diese Befehlssequenz modifizierten Adreßbereich zu einem Auf ruf des Emulators führt. Andernfalls handelt es sich nicht um eine Selbstmodifizierung von Programmcode. In beiden Fällen wird der sich auf eine Speicheradresse im Adreßbereich der Ursprungshardware beziehende Speicherbefehl ausgeführt. Damit ist mit dem erfindungsgemäßen verfahren zur Codetrans formation die Transformation von selbstmodifizierendem Code möglich, die bisher bei keinem der bekannten verfahren, weder statischer noch dynamischer Art, verfügbar ist. Eine stark einschränkende Forderung an den zu transformierenden Pro grammcode entfällt damit.
Die auf die Ursprungshardware bezogene Speicheradresse wird berechnet und anhand der Adreßumsetztabelle wird geprüft, ob zu dieser Speicheradresse transformierter Objektcode exi stiert. Wenn dies der Fall ist, wird der transformierte Ob jektcode an dieser Stelle durch eine Befehlssequenz zum Auf ruf des Emulators ersetzt, und die Adreßumsetztabelle wird so abgewandelt, daß das Auftreten eines Sprunges in den durch diese Befehlssequenz modifizierten Adreßbereich zu einem Auf ruf des Emulators führt. Andernfalls handelt es sich nicht um eine Selbstmodifizierung von Programmcode. In beiden Fällen wird der sich auf eine Speicheradresse im Adreßbereich der Ursprungshardware beziehende Speicherbefehl ausgeführt. Damit ist mit dem erfindungsgemäßen verfahren zur Codetrans formation die Transformation von selbstmodifizierendem Code möglich, die bisher bei keinem der bekannten verfahren, weder statischer noch dynamischer Art, verfügbar ist. Eine stark einschränkende Forderung an den zu transformierenden Pro grammcode entfällt damit.
Ein alternatives Verfahren zur Behandlung von selbstmodifi
zierendem Code - Anspruch 9 - ist anwendbar, falls auf der
Zielhardware ein Schreibschutz vorgesehen ist, der zu einer
Signalisierung führt, wenn zur Laufzeit des Programmcodes ein
Schreibzugriff auf eine auf einen Befehl des Objektcodes der
Ursprungshardware verweisende Adresse auftritt. Durch die Si
gnalisierung werden dann die folgenden Schritte einleitet:
Der Schreibbefehl auf die Adresse wird ausgeführt und anhand der Adreßumsetztabelle wird geprüft, ob zu dieser Speicheradresse transformierter Objektcode existiert. Wenn dies der Fall ist, wird der transformierte Objektcode an die ser Stelle durch eine Befehlssequenz zum Aufruf des Emulators ersetzt, und die Adreßumsetztabelle wird so abgewandelt, daß das Auftreten eines Sprunges in den durch diese Befehlsse quenz modifizierten Bereich des transformierten Objektcodes zu einem Aufruf des Emulators führt. Von Vorteil ist bei die ser Methode zur Behandlung von selbstmodifizierendem Code, daß nur dann Laufzeiteinbußen entstehen, wenn wirklich eine Modifikation stattfindet.
Der Schreibbefehl auf die Adresse wird ausgeführt und anhand der Adreßumsetztabelle wird geprüft, ob zu dieser Speicheradresse transformierter Objektcode existiert. Wenn dies der Fall ist, wird der transformierte Objektcode an die ser Stelle durch eine Befehlssequenz zum Aufruf des Emulators ersetzt, und die Adreßumsetztabelle wird so abgewandelt, daß das Auftreten eines Sprunges in den durch diese Befehlsse quenz modifizierten Bereich des transformierten Objektcodes zu einem Aufruf des Emulators führt. Von Vorteil ist bei die ser Methode zur Behandlung von selbstmodifizierendem Code, daß nur dann Laufzeiteinbußen entstehen, wenn wirklich eine Modifikation stattfindet.
Eine weitere Ausgestaltung der Erfindung - Anspruch 10 - be
zieht sich auf Codetransformationen, bei denen im Assembler
quellcode der Ursprungshardware Befehle auftreten, die zur
Laufzeit das Bitmuster eines Datenfeldes, gegebenenfalls nach
vorheriger Modifikation desselben, dynamisch als Befehl in
terpretieren und ausführen, und für die keine entsprechenden
Instruktionen im Befehlssatz der Zielhardware existieren. Da
bei wird ein derartiger, meist als Execute-Befehl bezeichne
ter Befehl bzw. eine derartige Befehlsfolge erfindungsgemäß
durch den Codetransformator in einen Emulatoraufruf im trans
formierten Objektcode umgesetzt. Bei den bekannten statischen
Transformationsverfahren besteht die Möglichkeit, solche in
ihrer Wirkung erst zur Laufzeit des Programmcodes festgeleg
ten Befehle zu behandeln, dagegen grundsätzlich nicht.
Um eine möglichst hohe Ablaufgeschwindigkeit des transfor
mierten Programmcodes zu erreichen, ist es zweckmäßig, zur
Laufzeit eine einmal eingeleitete Emulation zu beenden, so
bald für den weiteren Programmablauf wieder transformierter
Objektcode zur Verfügung steht. So besteht eine erste Mög
lichkeit - Anspruch 11 - darin, daß bei einem während einer
Emulation zur Laufzeit des Programmcodes auftretendem Sprung
befehl anhand der Adreßumsetztabelle geprüft wird, ob zum
Sprungziel transformierter Objektcode existiert. Wenn dies
der Fall ist, wird unter Beendung der Emulation zum entspre
chenden Sprungziel im transformierten Objektcode gesprungen.
Andernfalls wird die Emulation des Objektcodes der Ursprungs
hardware beim Sprungziel fortgesetzt.
Bei einer zweiten Variante - Anspruch 12 - wird statt dessen
nach jedem während einer Emulation zur Laufzeit des Pro
grammcodes abgearbeitetem Befehl anhand der Adreßumsetz
tabelle geprüft, ob ein zum darauffolgenden Befehl korrespon
dierender, transformierter Objektcode existiert. Wenn dies
der Fall ist, wird wiederum unter Beendung der Emulation zur
entsprechenden Stelle im transformierten Objektcode gesprun
gen. Andernfalls wird die Emulation fortgesetzt.
Im folgenden werden Einzelheiten des Verfahrens zur Code
transformation unter Bezugnahme auf Zeichnungen näher erläu
tert.
Es zeigt
Fig. 1 eine schematische Darstellung zur Erläuterung des
Grundprinzips des Verfahrens zur Codetransformation;
Fig. 2 ein Flußdiagramm zur Generierung des ablauffähigen
transformierten Programmcodes;
Fig. 3 schematisch die Verknüpfung der Adreßbereiche von
Ursprungs- und Zielhardware anhand der Adreßumsetz
tabelle;
Fig. 4 ein Flußdiagramm für die Transformation eines Sprung
befehls;
Fig. 5 ein Flußdiagramm für die Behandlung eines Sprungbefehls
mit erst zur Laufzeit auswertbarer Sprungzielangabe
durch den Emulator;
Fig. 6 ein Flußdiagramm für die Transformation eines Speicher
befehls;
Fig. 7 schematisch die Behandlung eines Sprungbefehls bei der
Emulation.
Das Grundprinzip des erfindungsgemäßen Verfahrens zur Code
transformation ist in Fig. 1 und Fig. 2 schematisch darge
stellt. Ein als Assemblerquellcode AC1 für eine Ursprungs
hardware M1 vorliegender Programmcode wird mit Hilfe eines
auf einem Computer COM ablaufenden Transformationsprogramms
TP, das einen Assembler ASS für die Ursprungshardware M1 so
wie einen Codetransformator CT enthält, in auf einer Ziel
hardware M2 ablauffähigen Programmcode PC2 transformiert. Bei
der Transformation erzeugt der Assembler ASS aus dem Assem
blerquellcode AC1 nach einer Syntaxanalyse den dazu äquiva
lenten Objektcode OC1 für die Ursprungshardware M1, in den
auch im Quellcode vorhandene Datenfelder (z. B. Datenkonstan
ten) übernommen werden. Der Codetransformator CT generiert
aus dem Assemblerquellcode AC1 entsprechenden Objektcode OC2
für die Zielhardware M2 sowie eine Adreßumsetztabelle TTAB,
die die Beziehung zwischen Adressen im Objektcode OC1 für die
Ursprungshardware M1 und den zugehörigen Adressen im Ob
jektcode OC2 für die Zielhardware M2 herstellt. Im auf der
Zielhardware M2 ablauffähigen Programmcode PC2 sind der Ob
jektcode OC1 für die Ursprungshardware M1 (mit Daten), der
Objektcode OC2 (ohne Daten) für die Zielhardware M2, die
Adreßumsetztabelle TTAB sowie ein Emulator E, der den Ob
jektcode OC1 für die Ursprungshardware M1 emulieren kann, zu
sammengefaßt. Die auf der Ursprungshardware vorhandenen Pro
zessorregister Ri werden vorteilhafterweise bei der Code
transformation umkehrbar eindeutig auf in Anzahl und Größe
entsprechende Register ri der Zielhardware abgebildet. Zu
sätzlich dazu auf der Zielhardware vorhandene Register ti
werden zur Laufzeit des transformierten Programmcodes PC2
durch den Emulator E und als temporäre Register durch den
transformierten Objektcode OC2 benutzt.
In Fig. 3 ist die Verknüpfung der Adreßbereiche von Ursprungs-
und Zielhardware M1 bzw. M2 anhand der Adreßumsetztabelle
TTAB beispielhaft für eine Ausgestaltung des Verfahrens, bei
der sowohl für Befehle als auch für Daten Eintragungen in die
Tabelle TTAB erfolgen, dargestellt. Ein Befehl 1 im Ob
jektcode OC1 der Ursprungshardware M1 weist z. B. eine Länge
auf, die drei Speicherzellen entspricht, und ist im Ob
jektcode OC1 bei Adresse A1 abgelegt. Durch die Adreßumsetz
tabelle TTAB wird der Adresse A1 eine Adresse A′1 im Ob
jektcode OC2 zugeordnet, bei der der dem Befehl 1 entspre
chende Befehl 1′ der Zielhardware M2 abgelegt ist. Einem wei
teren Befehl 2 im Objektcode OC1, der dort z. B. ab Adresse A4
abgelegt ist, entspricht im transformierten Objektcode OC2
eine Befehlsfolge aus zwei Instruktionen Befehl 2′ und Befehl
2a′. Ein nächster Befehl 3 wird analog in einen Befehl 3′ im
Objektcode OC2 transformiert usw.
Im allgemeinen weisen dabei einander entsprechende Befehle
oder Befehlsfolgen unterschiedliche Längen und damit unter
schiedlichen Speicherbedarf bei Ursprungs- und Zielhardware
M1 bzw. M2 auf. Bei einer Transformation von CISC-Code in
Programmcode für einen RISC-Rechner ergibt sich in der Regel
wegen der im Schnitt geringeren Leistungsfähigkeit von RISC-
Befehlen gegenüber den komplexeren CISC-Instruktionen ein
deutlich höherer Speicherbedarf für den transformierten Ob
jektcode OC2 als für den entsprechenden CISC-Objektcode OC1,
wenn man dabei reine Datendefinitionen im CISC-Objektcode OC1
außer acht läßt. Für z. B. als Datenkonstanten im Objektcode
OC1 der Ursprungshardware M1 enthaltenen Datenfelder erfolgen
besondere Eintragungen in der Adreßumsetztabelle TTAB, z. B.
Nullen, die anzeigen, daß zu den entsprechenden Stellen im
Objektcode OC1 kein äquivalenter, transformierter Objektcode
OC2 vorhanden ist. Im Programm auftretende Zugriffe auf Daten
erfolgen erfindungsgemäß ausschließlich auf den Objektcode
OC1 der Ursprungshardware M1 bezogen.
Fig. 4 zeigt anhand eines Flußdiagramms, wie ein im Assembler
quellcode AC1 auftretender Sprungbefehl transformiert wird.
Handelt es sich um einen Sprungbefehl, dessen Sprungziel
schon bei der Transformation bekannt und z. B. im Assembler
quellcode anhand einer symbolischen Sprungmarke angegeben
ist, so wird er in einen entsprechenden Sprungbefehl mit im
Objektcode OC2 für die Zielhardware M2 transformiert. Dabei
ist das Sprungziel im transformierten Objektcode OC2 über die
Adreßumsetztabelle TTAB mit dem entsprechenden Sprungziel im
Objektcode OC1 für die Ursprungshardware M1 verknüpft.
Wird das Sprungziel jedoch erst zur Laufzeit des Pro
grammcodes, z. B. abhängig von Benutzereingaben, bestimmt, so
wird der zu transformierende Sprungbefehl in einen Emulator
aufruf im Objektcode OC2 der Zielhardware übersetzt.
In Fig. 5 ist dargestellt, wie ein solcher Sprungbefehl mit
erst zur Laufzeit auswertbarer Sprungzielangabe durch den
Emulator bearbeitet wird. Ergibt eine Überprüfung des ermit
telten Sprungziels anhand der Adreßumsetztabelle TTAB, daß
dazu bereits transformierter Objektcode OC2 vorliegt, so wird
zu diesem verzweigt. Andernfalls, z. B. wenn die anzuspringen
de Befehlsfolge im Assemblerquellcode AC1 nicht mnemonisch,
sondern als Definition konstanter Daten spezifiziert und so
mit durch den Codetransformator CT nicht als Befehl folge er
kannt und transformiert wurde, wird die Emulation des ent
sprechenden Objektcodes OC1 der Ursprungshardware weiterge
führt.
Auch die Behandlung von selbstmodifizierendem Code ist mög
lich. Dazu wird jeder im Assemblerquellcode AC1 auftretende
Speicherbefehl in Objektcode OC2 für die Zielhardware, der
bei seiner Ausführung die folgenden, in Fig. 6 durch ein Fluß
diagramm dargestellten Schritte ausführt, transformiert:
Zunächst wird die auf die Ursprungshardware M1 bezogene Spei cheradresse ADR berechnet. Anhand der Adreßumsetztabelle TTAB wird dann geprüft, ob zur Speicheradresse ADR transformierter Objektcode OC2 existiert. Ist dies der Fall (selbst modifizierender Code), so wird der entsprechende Objektcode OC2 durch eine Befehlssequenz zum Aufruf des Emulators E er setzt, und die Adreßumsetztabelle TTAB wird so abgewandelt, daß das Auftreten eines Sprunges in den durch diese Be fehlssequenz modifizierten Adreßbereich im transformierten Objektcode OC2 zu einem Aufruf des Emulators E führt. Im Bei spiel wird dies durch Eintragen von Nullen (TTAB[ADR+x]=0, für x=0, . . . , L und L=Länge der o.g. Befehlssequenz) erreicht. Der Speicherbefehl zur Speicheradresse ADR wird ausgeführt.
Zunächst wird die auf die Ursprungshardware M1 bezogene Spei cheradresse ADR berechnet. Anhand der Adreßumsetztabelle TTAB wird dann geprüft, ob zur Speicheradresse ADR transformierter Objektcode OC2 existiert. Ist dies der Fall (selbst modifizierender Code), so wird der entsprechende Objektcode OC2 durch eine Befehlssequenz zum Aufruf des Emulators E er setzt, und die Adreßumsetztabelle TTAB wird so abgewandelt, daß das Auftreten eines Sprunges in den durch diese Be fehlssequenz modifizierten Adreßbereich im transformierten Objektcode OC2 zu einem Aufruf des Emulators E führt. Im Bei spiel wird dies durch Eintragen von Nullen (TTAB[ADR+x]=0, für x=0, . . . , L und L=Länge der o.g. Befehlssequenz) erreicht. Der Speicherbefehl zur Speicheradresse ADR wird ausgeführt.
In Fig. 7 ist schematisch die Behandlung eines Sprungbefehls
bei der Emulation dargestellt.
Bei der Ausführung des transformierten Programmcodes PC2 auf
der Zielhardware werden in der Regel Teile des Programms,
z. B. bei selbstmodifizierendem Code, durch den Emulator E ab
gearbeitet. Um eine möglichst hohe Ablaufgeschwindigkeit des
Programms zu erreichen, ist es jedoch zweckmäßig, die Emula
tion möglichst nur auf diejenigen Programmteile zu beschrän
ken, zu denen kein transformierter Objektcode OC2 vorliegt.
Dazu wird z. B. bei jedem zu emulierenden Sprungbefehl anhand
der Sprungzielangabe und der Adreßumsetztabelle TTAB geprüft,
ob zur entsprechenden Sprungadresse a transformierter Ob
jektcode OC2 vorhanden ist (TTAB[a]=0?). Ist dies der
Fall, wird zu der entsprechenden Stelle TTAB[a] im transfor
mierten Objektcode OC2 gesprungen und die Emulation beendet.
Andernfalls wird die Emulation am Sprungziel a im Objektcode
OC1 der Ursprungshardware fortgeführt.
Claims (12)
1. Verfahren zur Transformation von für eine Ursprungshardwa
re (M1) geschriebenem Assemblerquellcode (AC1) in auf einer
Zielhardware (M2) mit einer unterschiedlichen Rechnerarchi
tektur ablauffähigen Programmcode (PC2) mit Hilfe eines As
semblers (ASS) und eines Codetransformators (CT), wobei
- - durch den Assembler (ASS) aus dem Assemblerquellcode (AC1) Objektcode (OC1) für die Ursprungshardware (M1) generiert wird, in den auch im Assemblerquellcode (AC1) enthaltene Daten übernommen werden;
- - durch den Codetransformator (CT) aus dem Assemblerquellcode (AC1) entsprechender Objektcode (OC2) für die Zielhardware (M2) sowie eine Adreßumsetztabelle (TTAB), die die Bezie hung zwischen Adressen im Objektcode (OC1) für die Ur sprungshardware (M1) und den zugehörigen Adressen im Ob jektcode (OC2) für die Zielhardware (M2) herstellt, gene riert werden;
- - im auf der Zielhardware (M2) ablauffähigen Programmcode (PC2) der Objektcode (OC1) für die Ursprungshardware (M1), der Objektcode (OC2) für die Zielhardware (M2), die Adreß umsetztabelle (TTAB) sowie ein Emulator (E), der den Ob jektcode (OC1) für die Ursprungshardware (M1) emulieren kann, zusammengefaßt werden;
- - sich die im transformierten Objektcode (OC2) verwendeten Adreßbezüge auf den Objektcode (OC1) für die Ursprungshard ware (M1) beziehen und erst beim Ablauf des transformierten Programms (PC2) mit Hilfe der Adreßumsetztabelle (TTAB) in entsprechende Bezüge auf Adressen im Objektcode (OC2) für die Zielhardware (M2) umgesetzt werden, soweit es sich da bei um auf Befehle verweisende Bezüge handelt;
- - der Codetransformator (CT) bei der Generierung des Ob jektcodes (OC2) für die Zielhardware (M2) aus dem Assem blerquellcode (AC1) Befehle oder Befehlsfolgen, die erst während der Ausführung des Codes vollständig definiert wer den oder in Form von Datendefinitionen angegeben sind, in Aufrufe an den den entsprechenden Objektcode (OC1) für die Ursprungshardware (M1) emulierenden Emulator (E) transfor miert.
2. Verfahren nach Anspruch 1,
dadurch gekennzeichnet,
daß bei der Transformation von Programmcode zumindest eines
der Register (Ri) der Ursprungshardware (M1) umkehrbar ein
deutig auf ein Register (ri) der Zielhardware (M2) abgebildet
wird.
3. Verfahren nach Anspruch 1 oder 2,
dadurch gekennzeichnet,
daß bei der Transformation von Programmcode zumindest eines
der Register (Ri) der Ursprungshardware (M1) auf der Ziel
hardware (M2) durch einen Speicherbereich nachgebildet wird.
4. Verfahren nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet,
daß für alle Befehle und Datendefinitionen im Objektcode
(OC1) der Ursprungshardware (M1) jeweils Einträge in der
Adreßumsetztabelle (TTAB) erfolgen, wodurch die auf Befehle
verweisenden Adressen (A) im Objektcode (OC1) der Ursprungs
hardware (M1) auf entsprechende Adressen (A′) im transfor
mierten Objektcode (OC2) abgebildet werden, während bei auf
Daten verweisenden Adressen (A) das Fehlen von korrespondie
rendem transformierten Objektcode (OC2) angezeigt wird.
5. Verfahren nach einem der Ansprüche 1 bis 3,
dadurch gekennzeichnet,
daß nur für die als mögliche Sprung- oder Zugriffsziele rele
vanten Befehle im Objektcode (OC1) der Ursprungshardware (M1)
Einträge in der Adreßumsetztabelle (TTAB) erfolgen, wodurch
die diese Befehle enthaltenden Adressen (A) im Objektcode
(OC1) der Ursprungshardware (M1) auf entsprechende Adressen
(A′) im transformierten Objektcode (OC2) abgebildet werden.
6. Verfahren nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet,
daß ein im Assemblerquellcode (AC1) auftretender Sprungbefehl
mit bekanntem Sprungziel durch den Codetransformator (CT) in
einen entsprechenden Sprungbefehl im Objektcode (OC2) für die
Zielhardware (M2) transformiert wird, wobei das Sprungziel im
transformierten Objektcode (OC2) über die Adreßumsetztabelle
(TTAB) mit dem entsprechenden Sprungziel im Objektcode (OC1)
für die Ursprungshardware (M1) verknüpft ist.
7. Verfahren nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet,
daß ein im Assemblerquellcode (AC1) auftretender Sprungbefehl
mit einer erst zur Laufzeit auswertbaren Sprungzielangabe
durch den Codetransformator (CT) in einen Emulatoraufruf im
Objektcode (OC2) für die Zielhardware (M2) transformiert
wird, der bei seiner Ausführung bewirkt, daß der Emulator (E)
anhand der dann ausgewerteten Sprungzielangabe und der Adreß
umsetztabelle (TTAB) überprüft, ob zum Sprungziel transfor
mierter Objektcode (OC2) für die Zielhardware (M2) existiert,
woraufhin im Fall der Existenz eines solchen transformierten
Objektcodes (OC2), dieser direkt angesprungen wird, während
anderenfalls die eigentliche Emulation des entsprechenden Ob
jektcodes (OC1) der Ursprungshardware (M1) erfolgt.
8. Verfahren nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet,
daß der Codetransformator (CT) zur Behandlung von selbstmodi
fizierendem Code jeden im Assemblerquellcode (AC1) auftreten
den Speicherbefehl in Objektcode (OC2) für die Zielhardware
(M2) transformiert, der bei seiner Ausführung die folgenden
Schritte durchführt:
- - die auf die Ursprungshardware (M1) bezogene Speicheradresse (ADR) wird berechnet;
- - anhand der Adreßumsetztabelle (TTAB) wird geprüft, ob zur Speicheradresse (ADR) transformierter Objektcode (OC2) exi stiert;
- - falls zur Speicheradresse (ADR) transformierter Objektcode (OC2) existiert, wird dieser durch eine Befehlssequenz zum Aufruf des Emulators (E) ersetzt, und die Adreßumsetztabel le (TTAB) wird so abgewandelt, daß das Auftreten eines Sprunges in den durch diese Befehlssequenz modifizierten Adreßbereich im transformierten Objektcode (OC2) zu einem Aufruf des Emulators (E) führt;
- - der Speicherbefehl zur Speicheradresse (ADR) wird ausge führt.
9. Verfahren nach einem der Ansprüche 1 bis 7,
dadurch gekennzeichnet,
daß auf der Zielhardware (M1) zur Behandlung von selbstmodi
fizierendem Code ein Schreibschutz vorgesehen ist, durch den
ein zur Laufzeit des Programmcodes (PC2) auftretender
Schreibzugriff auf eine einen Befehl des Objektcodes (OC1)
der Ursprungshardware (M1) enthaltende Adresse zu einer Si
gnalisierung führt, die die folgenden Schritte einleitet:
- - der Schreibbefehl auf die Adresse wird ausgeführt;
- - anhand der Adreßumsetztabelle (TTAB) wird geprüft, ob zur Speicheradresse transformierter Objektcode (OC2) existiert;
- - falls zur Speicheradresse transformierter Objektcode (OC2) existiert, wird dieser durch eine Befehlssequenz zum Aufruf d,es Emulators (E) ersetzt, und die Adreßumsetztabelle (TTAB) wird so abgewandelt, daß das Auftreten eines Sprun ges in den durch diese Befehlssequenz modifizierten Adreß bereich im transformierten Objektcode (OC2) zu einem Aufruf des Emulators (E) führt.
10. Verfahren nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet,
daß ein im Assemblerquellcode (AC1) auftretender Befehl, der
zur Laufzeit das Bitmuster eines Datenfeldes, gegebenenfalls
nach vorheriger Modifikation desselben, dynamisch als Befehl
interpretiert und ausführt, und für den keine entsprechenden
Instruktionen oder Befehlsfolgen im Befehlssatz der Zielhard
ware (M2) existieren, durch den Codetransformator (CT) in ei
nen Emulatoraufruf im transformierten Objektcode (OC2) umge
setzt wird.
11. Verfahren nach einem der vorhergehenden Ansprüche,
dadurch gekennzeichnet,
daß bei einem während einer Emulation zur Laufzeit des Pro
grammcodes (PC2) auftretendem Sprungbefehl anhand der Adreß
umsetztabelle (TTAB) geprüft wird, ob zum Sprungziel (a)
transformierter Objektcode (OC2) existiert, und wenn dies der
Fall ist, unter Beendung der Emulation zum entsprechenden
Sprungziel (TTAB[a]) im transformierten Objektcode (OC2) ge
sprungen wird, während andernfalls die Emulation des Ob
jektcodes (OC1) der Ursprungshardware (M1) beim Sprungziel
(a) fortgesetzt wird.
12. Verfahren nach einem der Ansprüche 1 bis 10,
dadurch gekennzeichnet,
daß nach jedem während einer Emulation zur Laufzeit des Pro
grammcodes (PC2) abgearbeitetem Befehl anhand der Adreß
umsetztabelle (TTAB) geprüft wird, ob ein zum darauffolgenden
Befehl korrespondierender, transformierter Objektcode (OC2)
existiert, und wenn dies der Fall ist, unter Beendung der
Emulation zum entsprechenden Stelle im transformierten Ob
jektcode (OC2) gesprungen wird, während andernfalls die Emu
lation des Objektcodes (OC1) der Ursprungshardware (M1) fort
gesetzt wird.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19617842A DE19617842A1 (de) | 1996-05-03 | 1996-05-03 | Verfahren zur Codetransformation |
PCT/DE1997/000900 WO1997042574A1 (de) | 1996-05-03 | 1997-05-02 | Verfahren zur codetransformation |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19617842A DE19617842A1 (de) | 1996-05-03 | 1996-05-03 | Verfahren zur Codetransformation |
Publications (1)
Publication Number | Publication Date |
---|---|
DE19617842A1 true DE19617842A1 (de) | 1997-11-13 |
Family
ID=7793272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19617842A Ceased DE19617842A1 (de) | 1996-05-03 | 1996-05-03 | Verfahren zur Codetransformation |
Country Status (2)
Country | Link |
---|---|
DE (1) | DE19617842A1 (de) |
WO (1) | WO1997042574A1 (de) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999012094A1 (de) * | 1997-09-01 | 1999-03-11 | Siemens Nixdorf Informationssysteme Ag | Verfahren zum umsetzen eines objektcodes in einen programmcode |
FR2797962A1 (fr) * | 1999-08-23 | 2001-03-02 | Trusted Logic | Procede de conversion de types de variables codees dans un programme informatique et systeme de traduction de programme informatique correspondant |
EP1429215A1 (de) * | 2002-12-10 | 2004-06-16 | Siemens Aktiengesellschaft | Verfahren zur Ausführung eines ersten Softwareprogramms, welches für eine speicherprogrammierbare Steuerung entwickelt ist, auf einem Personal Computer |
US7805716B2 (en) | 2002-12-10 | 2010-09-28 | Siemens Aktiengesellschaft | Method for executing a first software program, developed for a stored-program controller, on a computer |
EP2290537A3 (de) * | 2003-03-13 | 2011-11-16 | Northrop Grumman Corporation | Extreme Pipeline und optimierte Aufzeichnungstechnologie (ein rekonfigurierbarer Binär-Translator) |
WO2014074759A1 (en) * | 2012-11-08 | 2014-05-15 | Unisys Corporation | Optimization concerning address validation in a binary translation system |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1992015939A1 (en) * | 1991-03-07 | 1992-09-17 | Digital Equipment Corporation | Method and apparatus for computer code processing in a code translator |
US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4794522A (en) * | 1985-09-30 | 1988-12-27 | International Business Machines Corporation | Method for detecting modified object code in an emulator |
-
1996
- 1996-05-03 DE DE19617842A patent/DE19617842A1/de not_active Ceased
-
1997
- 1997-05-02 WO PCT/DE1997/000900 patent/WO1997042574A1/de active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
WO1992015939A1 (en) * | 1991-03-07 | 1992-09-17 | Digital Equipment Corporation | Method and apparatus for computer code processing in a code translator |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999012094A1 (de) * | 1997-09-01 | 1999-03-11 | Siemens Nixdorf Informationssysteme Ag | Verfahren zum umsetzen eines objektcodes in einen programmcode |
US6279150B1 (en) | 1997-09-01 | 2001-08-21 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Method for converting an object code into a program code |
FR2797962A1 (fr) * | 1999-08-23 | 2001-03-02 | Trusted Logic | Procede de conversion de types de variables codees dans un programme informatique et systeme de traduction de programme informatique correspondant |
EP1429215A1 (de) * | 2002-12-10 | 2004-06-16 | Siemens Aktiengesellschaft | Verfahren zur Ausführung eines ersten Softwareprogramms, welches für eine speicherprogrammierbare Steuerung entwickelt ist, auf einem Personal Computer |
US7805716B2 (en) | 2002-12-10 | 2010-09-28 | Siemens Aktiengesellschaft | Method for executing a first software program, developed for a stored-program controller, on a computer |
EP2290537A3 (de) * | 2003-03-13 | 2011-11-16 | Northrop Grumman Corporation | Extreme Pipeline und optimierte Aufzeichnungstechnologie (ein rekonfigurierbarer Binär-Translator) |
US8423976B2 (en) | 2003-03-13 | 2013-04-16 | Northrop Grumman Corporation | Extreme pipeline and optimized reordering technology |
WO2014074759A1 (en) * | 2012-11-08 | 2014-05-15 | Unisys Corporation | Optimization concerning address validation in a binary translation system |
Also Published As
Publication number | Publication date |
---|---|
WO1997042574A1 (de) | 1997-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0502857B1 (de) | Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems | |
DE69924857T2 (de) | Programm-kode-umwandlung | |
DE69724322T2 (de) | Verfahren und Anordnung zum frühzeitigen Einfügen von Assemblercode zwecks Optimierung | |
DE69926602T2 (de) | Hybrider Rechtzeitkompiler der minimale Betriebsmittel verwendet | |
DE69918334T2 (de) | Erzeugung von kompilierten programmen für interpretative laufzeitumgebungen | |
DE19945992B4 (de) | Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren | |
DE60208710T2 (de) | Plattformunabhängige im-voraus-kompilierung | |
DE69432974T2 (de) | Verfahren und vorrichtung zur automatischen analyse eines zielprogramms | |
DE60313652T2 (de) | Verfahren und gerät zur kontrolle der umwandlung von programm-kodes | |
DE69814174T2 (de) | Java laufzeitsystem mit veränderter sammlung von konstanten | |
EP0674784B1 (de) | Verfahren zum testen mindestens einer klasse eines objektorientierten programmes auf einem rechner | |
CH633643A5 (de) | Verfahren zur blockierungsfreien verzahnten simultanverarbeitung mehrerer aufgaben mittels mehrerer programme in einer datenverarbeitungsanlage. | |
EP1010070B1 (de) | Verfahren zum umsetzen eines objektcodes in einen programmcode | |
DE19617842A1 (de) | Verfahren zur Codetransformation | |
EP0910825A1 (de) | Verfahren zur migration von programmen mit portierbaren und nicht-portierbaren programmteilen | |
DE2658950A1 (de) | Mikroprogrammierte verarbeitungseinheit sowie verfahren zur organisation derselben | |
EP0664905B1 (de) | Verfahren zur durchfürhung von tests an auf einem rechner parallel ablauffähigen objekten eines objektorientierten programmes | |
DE102009041098A1 (de) | Verfahren zur Kennzeichnung eines in einem Computerspeichersystem enthaltenden Computerprogrammabschnitts | |
DE69726140T2 (de) | Verfahren und System zum Ausführen von Befehlen in einem Mikroprozessor | |
DE102004056006B3 (de) | Verfahren zur Emulation eines für einen Ursprungsprozessor in einem Ursprungscode erstellten Programms auf einem Zielprozessor | |
EP1668494B1 (de) | Verfahren und system zur sprachkonfigurierung eines computerprogramms | |
EP0818728B1 (de) | Verfahren zur Behandlung von indizierten Sprüngen bei einer Codetransformation | |
EP0843256B1 (de) | Nachbildung eines Bedingungscodes bei Codetransformationen | |
EP0560342B1 (de) | Verfahren zum Untersuchen des Ablaufs eines in einer Hardware-Beschreibungssprache geschriebenen Programms | |
WO1994007197A1 (de) | Verfahren zur bearbeitung eines anwenderprogramms auf einem parallelrechnersystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8131 | Rejection |