DE19924702A1 - Systeme mit einheitlicher Datenstruktur, Verfahren und Computerprogrammprodukte zur Feststellung von globalen Konflikten - Google Patents
Systeme mit einheitlicher Datenstruktur, Verfahren und Computerprogrammprodukte zur Feststellung von globalen KonfliktenInfo
- Publication number
- DE19924702A1 DE19924702A1 DE19924702A DE19924702A DE19924702A1 DE 19924702 A1 DE19924702 A1 DE 19924702A1 DE 19924702 A DE19924702 A DE 19924702A DE 19924702 A DE19924702 A DE 19924702A DE 19924702 A1 DE19924702 A1 DE 19924702A1
- Authority
- DE
- Germany
- Prior art keywords
- global
- file
- conflicts
- symbol
- information
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/445—Program loading or initiating
- G06F9/44552—Conflict resolution, i.e. enabling coexistence of conflicting executables
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
Ein System, ein Verfahren und ein Computerprogrammprodukt zum Kompilieren einer Quellendatei und zum Erzeugen einer einheitlichen Datenstruktur (UDS), die Informationen enthält, die Symbole und zugehörige globale Register betreffen. Die UDS gestattet die Abschätzung von Symbolkonflikten für globale Register. Der Kompilierer erzeugt auch Objektdateien aus zugehörigen Quellendateien. Die Objektdateien enthalten die Informationen für globale Symbole bezüglich speziellen globalen Registern, um die Diagnose von Konflikten zwischen globalen Symbolen und Registern zu ermöglichen.
Description
Diese Anmeldung bezieht sich auf die gemeinsam übertragene
US-Patentanmeldung mit den Seriennrn. . . . und
. . ., eingereicht am gleichen Datum hierzu, jeweils
erfunden von Stephen Chessin, Rod Evans und Michael Walker;
und Stephen Chessin, Rod Evans und Michael Walker. Auf jede
dieser zusammengehörenden Patentanmeldungen wird hiermit
ausdrücklich verwiesen, sie werden hierin integriert und zu
einem Teil hiervon gemacht.
Das Gebiet dieser Erfindung betrifft Systeme mit
einheitlicher Datenstruktur, Verfahren und
Computerprogramme zur Feststellung von Konflikten von
globalen Registern; und insbesondere die Anzeige der
Verwendung von globalen Registern und die Erkennung von
Verwendungskonflikten in globalen Registern unter
Verwendung von Informationen, die in einer einheitlichen
Datenstruktur enthalten sind.
Die Betriebsflexibilität in Computersystemen wird durch
Kennzeichnen von einem oder mehreren der
Computersystemregister als global hinsichtlich des
Gültigkeitsbereichs erhöht. Lokale Register besitzen im
Gegensatz zu globalen Registern einen auf das spezielle
Modul oder Unterprogramm begrenzten Gültigkeitsbereich. Mit
anderen Worten, diese Register werden vom gesamten
Computerprogramm und nicht nur von speziellen Modulen oder
Unterprogrammen verwendet. In Verbindung mit diesen
globalen Registern werden spezielle globale Variablen oder
Symbole verwendet.
Softwareprogramme sind häufig aus Einzelteilen
zusammengesetzt, die jeweils separat kompiliert werden, was
eine falsche Bezugnahme und falsche Gültigkeitsbereiche von
Variablen verursacht, wenn globale Register falsch
aufgerufen werden. Die Softwareprogramme schließen
insbesondere einen Code von einer oder mehreren
Bibliotheken ein. Dieser Bibliothekscode wird separat
kompiliert, was die auftretenden Probleme der falschen
Bezugnahme und des Gültigkeitsbereichs verschlimmert. Ein
ernstes technisches Problem entsteht, wenn verschiedene
Teile eines speziellen Programms ein bestimmtes globales
Register für unterschiedliche Variablenwerte verwenden.
Solche unterschiedlichen und uneinheitlichen Verwendungen
für dasselbe globale Register verursachen gewöhnlich
während der Programmausführung falsche Ergebnisse, da sich
der falsche Variablenwert zur falschen Zeit in dem globalen
Register befindet.
Gemäß der vorliegenden Erfindung geben separat kompilierte
Softwareeinheiten ausdrücklich ihre Verwendung von globalen
Registern in einer einheitlichen Datenstruktur an, die
Informationen enthält, die globale Register und Variablen
zuordnen und kennzeichnen. Die einheitliche Datenstruktur
wird von den statischen und dynamischen Binderprogrammen
gelesen, die eine Verknüpfungsoperation ausführen, um
Verwendungskonflikte, die bei der Kompilierung vorkommen,
zu erkennen. Gemäß einer Ausführungsform der vorliegenden
Erfindung wird eine einheitliche Datenstruktur (UDS)
angelegt, um spezielle Symboltabelleneintragungen, die ein
globales Symbol einem speziellen globalen Register
zuordnen, ausdrücklich anzugeben. Der Teil "Name" der UDS
verweist auf eine Zeichenfolge, die den Namen des Symbols
enthält, oder enthält ansonsten einen NULL-Zeiger, um
anzuzeigen, daß das Register als Zwischenregister verwendet
wird. Der Teil "Wert" der Symboltabelleneintragung zeigt
das spezielle Register an, für das diese Eintragung gilt.
Gemäß der vorliegenden Erfindung erzeugt ein Kompilierer
UDS-Eintragungen, um anzugeben, wie eine enthaltende
Objektdatei spezielle anwendungsreservierte globale
Register verwendet. Das statische Binderprogramm prüft die
UDS-Eintragungen für alle Objektdateien, die zu einer
speziellen Zielobjektdatei kombiniert werden, um
sicherzustellen, daß die globalen Register, auf die durch
die verschiedenen Quellenelemente Bezug genommen wird,
kompatibel verwendet werden. Die resultierende erzeugte
Objektdatei enthält diese UDS-Eintragungen, um die
Verwendung der globalen Register von dem resultierenden
Objekt anzuzeigen. Gemäß der vorliegenden Erfindung warnt
das statische Binderprogramm, wenn irgendein globales
Register in inkompatibler Weise mit dem erstellten Objekt
verwendet wird. Gemäß der vorliegenden Erfindung erzeugt
das statische Binderprogramm eine Warnung, wenn eine
gemeinsam genutzte Objektdatei erstellt wird, die
anwendungsreservierte globale Register verwendet. Gemäß der
vorliegenden Erfindung wird von einer
Archivierungseinrichtung eine ähnliche Warnung ausgegeben,
wenn eine Archivbibliothek erstellt wird, die eine
Objektdatei enthält, die anwendungsreservierte globale
Register verwendet. Ein dynamisches Binderprogramm gemäß
der vorliegenden Erfindung prüft, um sicherzustellen, daß
alle Objektdateien, die in einen ausgewählten ausführbaren
Prozeß eingebunden werden, kompatible Verwendungen von
anwendungsreservierten globalen Registern aufweisen.
Gemäß der vorliegenden Erfindung umfaßt ein System und ein
Verfahren zum Kompilieren und Verknüpfen einer Quellendatei
einen Kompilierer zum Erzeugen einer UDS, die spezielle
globale Symbole entsprechenden globalen Registern zuordnet,
zum Speichern von Variableninformationen, die globale
Symbole betreffen, auf die in speziellen Quellendateien
Bezug genommen wird oder die dort definiert sind. Die UDS-
Informationen reichen aus, um zu ermöglichen, daß ein
Binderprogramm Klassendefinitionen auflöst und
Klassenverschiebungs-Operationen durchführt. Die UDS-
Informationen sind in der Objektdatei enthalten, die vom
Kompilierer gemäß einer Ausführungsform der vorliegenden
Erfindung erzeugt wird. Der Kompilierer erzeugt
insbesondere Objektdateien derart, daß die Identifikation
von Verwendungskonflikten und die Durchführung von
Verschiebungsoperationen bis zur Operation des
Binderprogramms verzögert werden. Ein Binderprogramm
verknüpft die Objektdatei mit anderen Objektdateien und
gemeinsam genutzten Bibliotheken, um dadurch entweder eine
ausführbare Datei oder eine gemeinsam genutzte Bibliothek
zu erzeugen. Die Liste der anderen Objektdateien und
gemeinsam genutzten Bibliotheken kann leer sein, wobei in
diesem Fall das Binderprogramm die ausführbare Datei oder
gemeinsam genutzte Bibliothek aus der einzelnen Objektdatei
erzeugt. Das Binderprogramm verwendet die in der
Objektdatei enthaltenen Informationen, um
Verwendungskonflikte zu identifizieren und
Verschiebungsoperationen auszuführen.
Fig. 1A ist ein Kompilierungs-Datenflußdiagramm gemäß
einer bevorzugten Ausführungsform der
vorliegenden Erfindung, der die Erstellung von
Objektdateien durch einen Kompilierer zeigt,
welche eine einheitliche Datenstruktur (UDS)
enthalten, um die Feststellung von Konflikten
zwischen Zuordnungen von globalen Registern durch
das statische und das Ablauf-Binderprogramm zu
ermöglichen;
Fig. 1B ist ein Ablaufplan, der die Erzeugung von
globalen Informationen und die Erstellung von
einheitlichen Datenstrukturen in Objektdateien,
um die Identifikation von globalen Konflikten zu
ermöglichen, zeigt;
Fig. 2 ist ein Blockdiagramm eines Computersystems gemäß
einer bevorzugten Ausführungsform der
vorliegenden Erfindung;
Fig. 3A ist ein Ablaufplan eines Binderprogrammprozesses,
der in Verbindung mit der vorliegenden Erfindung
verwendet werden kann;
Fig. 3B ist ein Ablaufplan eines Binderprogrammprozesses
gemäß einer Ausführungsform der vorliegenden
Erfindung, der die Initialisierung von globalen
Registern umfaßt;
Fig. 4A ist ein Blockdiagramm einer Objektdatei, die von
einem Kompilierer gemäß einer bevorzugten
Ausführungsform der vorliegenden Erfindung
erzeugt wird, wobei Objektdateien durch den
Kompilierer mit einer UDS erzeugt werden, um die
Feststellung von Konflikten zwischen Zuordnungen
von globalen Registern durch das statische und
das Ablauf-Binderprogramm zu ermöglichen;
Fig. 4B ist ein Blockdiagramm einer UDS gemäß einer
Ausführungsform der vorliegenden Erfindung,
einschließlich einer Verwendungsinformation und
einer Initialisierungsinformation, um die
Feststellung von Konflikten zwischen Zuordnungen
von globalen Registern durch das statische und
das Ablauf-Binderprogramm zu ermöglichen;
Fig. 4C ist ein Blockdiagramm des Protokolls für die
Verwendungsinformation in einer UDS gemäß der
vorliegenden Erfindung;
Fig. 4D ist ein Blockdiagramm des Protokolls für die
Initialisierungsinformation in einer UDS gemäß
der vorliegenden Erfindung;
Fig. 5 ist ein Ablaufplan eines
Kompilierungs-/Verknüpfungsprozesses gemäß einer
bevorzugten Ausführungsform der vorliegenden
Erfindung;
Fig. 6 ist ein detaillierter Ablaufplan der
Verknüpfungsverarbeitung gemäß einer bevorzugten
Ausführungsform der vorliegenden Erfindung; und
Fig. 7 ist ein Ablaufplan der Operation einer
einheitlichen Datenstruktur (UDS), die von einem
Kompilierer gemäß einer bevorzugten
Ausführungsform der vorliegenden Erfindung
erzeugt wird.
Fig. 1A ist ein Kompilierungs-Datenflußdiagramm gemäß
einer bevorzugten Ausführungsform der vorliegenden
Erfindung, der die Erstellung von Objektdateien durch einen
Kompilierer zeigt, welche eine einheitliche Datenstruktur
(UDS) 406 enthalten, um die Feststellung von Konflikten
zwischen Zuordnungen von globalen Registern durch das
statische und das Ablauf-Binderprogramm zu ermöglichen.
Insbesondere stellt Fig. 1 einen Kompilierer 104, ein
statisches Binderprogramm 114 und ein Ablauf-Binderprogramm
118 gemäß einer Implementierung der vorliegenden Erfindung
dar. Der Kompilierer 104 erzeugt aus einer Quellendatei 102
eine Objektdatei 106 mit einer UDS 406 gemäß der
vorliegenden Erfindung. Die Quellendatei 102 ist gemäß
verschiedenen Ausführungsformen der vorliegenden Erfindung
in den gut bekannten Computerprogrammiersprachen C, C++
oder Fortran geschrieben. Es ist wichtig zu beachten, daß
die vorliegende Erfindung keine Einschränkungen dahingehend
auferlegt, wie Entwickler die zur Erzeugung der
Quellendatei 102 ausgewählte spezielle Sprache verwenden
können. Gemäß einer Ausführungsform der vorliegenden
Erfindung umfaßt das statische Binderprogramm 114 einen
Verschiebungscode-Abschnitt, der verwendet wird, um
Registersymbole zu initialisieren. Die UDS 406 gemäß einer
Ausführungsform der vorliegenden Erfindung besitzt gemäß
der folgenden Tabelle einen Namen, .rela; einen Typ,
SHT_RELA; und keine Attribute:
Die Objektdatei 106, sowie Null oder mehrere andere
Objektdateien 108, und/oder Null oder mehrere gemeinsam
genutzte Bibliotheken 110 werden gemäß der vorliegenden
Erfindung zu einem statischen Binderprogramm 114
übertragen. Die anderen Objektdateien 108 wurden vorher vom
Kompilierer 104 der vorliegenden Erfindung kompiliert, und
die gemeinsam genutzten Bibliotheken 110 wurden vorher vom
statischen Binderprogramm 114 erstellt. Das statische
Binderprogramm 114 erzeugt eine ausführbare Datei 116, die
auf einem leistungsunabhängigen Medium gesichert wird. Das
Ablauf-Binderprogramm 118 erzeugt andererseits eine
Ausführungsabbildung im Hauptspeicher, die zur
unmittelbaren Ausführung bereit ist. Gemäß einer
Ausführungsform der vorliegenden Erfindung erzeugt das
statische Binderprogramm 114 eine weitere gemeinsam
genutzte Bibliothek. Wie zu erkennen ist, ist eine
gemeinsam genutzte Bibliothek eine Form einer Objektdatei.
Folglich werden hierin die Begriffe "Objektdatei" und
"gemeinsam genutzte Bibliothek" austauschbar verwendet. Wie
für Fachleute zu erkennen ist, umfaßt die ausführbare Datei
116 einen Code, Daten und andere Informationen aus den
Objektdateien 106, 108 und enthält auch Verweise auf
gemeinsam genutzte Bibliotheken 110 (d. h. einen Code, Daten
usw. aus den gemeinsam genutzten Bibliotheken 110), die
nicht tatsächlich in die ausführbare Datei 116 eingebettet
sind. Während der Ablaufzeit werden die ausführbare Datei
116 und die gemeinsam genutzten Bibliotheken 110 zu einem
Ablauf-Binderprogramm 118 übertragen. Das Ablauf-
Binderprogramm 118 löst dann die in der ausführbaren Datei
116 enthaltenen Bezugnahmen auf die gemeinsam genutzten
Bibliotheken 110 auf und erzeugt eine Ausführungsabbildung
120. Die Ausführungsabbildung 120 wird im Hauptspeicher 208
(siehe Fig. 2) gespeichert und durch eine Zentraleinheit
204 (Fig. 2) ausgeführt. Im allgemeinen wird die Operation
des statischen Binderprogramms 114 und des Ablauf-
Binderprogramms 118 in vier Phasen implementiert, wie
nachstehend ausführlich erörtert.
Fig. 1B ist ein Ablaufplan, der die Erzeugung von globalen
Informationen und die Erstellung von einheitlichen
Datenstrukturen in Objektdateien, um die Identifikation von
globalen Konflikten zu ermöglichen, zeigt. Insbesondere
werden gemäß einer Ausführungsform der vorliegenden
Erfindung globale Registerinformationen, die globale
Variablen betreffen, auf die in Quellendateien Bezug
genommen wird, erzeugt 164. Dann werden aus den
Quellendateien 102 Objektdateien, einschließlich
einheitlicher Datenstrukturen, die die globalen
Registerinformationen enthalten, erzeugt 166. Die
Objektdateien werden dann unter Verwendung der globalen
Informationen ausgewertet 168, um festzustellen, ob
irgendwelche globalen Registerkonflikte vorhanden sind.
Fig. 2 ist ein Blockdiagramm eines Computersystems 202
gemäß einer bevorzugten Ausführungsform der vorliegenden
Erfindung. Das Computersystem 202 umfaßt einen oder mehrere
Prozessoren, wie z. B. eine Zentraleinheit (CPU) 204, die
mit einem Übertragungsmedium, wie z. B. einem Bus 206,
verbunden sind. Das Computersystem 202 umfaßt ferner einen
Hauptspeicher (Direktzugriffsspeicher (RAM)) 208, der
ebenfalls mit dem Bus 206 verbunden ist. Das Computersystem
202 umfaßt gemäß einer Ausführungsform des weiteren einen
Kompilierer 104 und ein erstes und ein zweites
Binderprogramm, einschließlich eines statischen
Binderprogramms 114 und eines Ablauf-Binderprogramms 118,
die im Hauptspeicher 208 gespeichert sind. Insbesondere
sind die Quellendatei 102; die Objektdateien 106 und 108;
die gemeinsam genutzten Bibliotheken 110; und die
Ausführungsabbildung 120 ebenfalls vorzugsweise im
Hauptspeicher 208 gespeichert. Das Computersystem 202
umfaßt ferner eine Vielzahl von Registern 210,
einschließlich eines oder mehrerer globaler Register. Gemäß
einer Ausführungsform der vorliegenden Erfindung umfaßt ein
Computerprogrammprodukt (wie z. B. eine Platte 214) gemäß
einer Ausführungsform der vorliegenden Erfindung
maschinenlesbare Medien mit einer darauf aufgezeichneten
Computerprogrammlogik. Insbesondere wird die Computerlogik
in dem Computersystem 202 ausgeführt, um zu ermöglichen,
daß das Computersystem 202 die Funktionen der vorliegenden
Erfindung ausführt. Die Computerprogrammlogik wird
beispielsweise von einem Diskettenlaufwerk 212 gelesen. Die
Computerprogrammlogik, die den Kompilierer 104 und die
Binderprogramme, einschließlich des statischen
Binderprogramms 114 und des Ablauf-Binderprogramms 118,
darstellt, kann dann in den Hauptspeicher 208 (wie gezeigt)
geladen werden und von der CPU 204 ausgeführt werden. Eine
geeignete Form für das Computersystem 202 ist ein Sun
Microsystems Arbeitsplatzrechner, der von Sun Microsystems,
Inc., in Mountain View, Kalifornien, hergestellt wird. Ein
beliebiges anderes geeignetes Computersystem könnte
alternativ verwendet werden.
Fig. 3A ist ein Ablaufplan eines Binderprogrammprozesses,
der in Verbindung mit der vorliegenden Erfindung verwendet
werden kann. Mit Bezug auf einen Ablaufplan 302, der in
Fig. 3A gezeigt ist, führt das statische Binderprogramm 114
eine Lesephase 306, eine Aufbauphase 308, eine
Verschiebungsphase 310 und eine Schreibphase 312 aus. Diese
Binderprogrammphasen 306, 308, 310 und 312 werden in
Verbindung mit der vorliegenden Erfindung ausgeführt.
Fig. 3B ist ein Ablaufplan eines Binderprogrammprozesses
gemäß einer Ausführungsform der vorliegenden Erfindung, der
die Initialisierung von globalen Registern umfaßt. Mit
Bezug auf einen Ablaufplan 302, der in Fig. 3B gezeigt ist,
führt das Ablauf-Binderprogramm 118 insbesondere eine
Lesephase 306, eine Aufbauphase 308, eine
Verschiebungsphase 310, eine Phase 312 des Schreibens in
den Speicher, eine Phase 364 der Initialisierung von
globalen Registern gemäß der vorliegenden Erfindung und
eine Phase 366 der Steuerungsübergabe an die ausführbare
Datei, gefolgt von einem Zustand 394 der Beendigung oder
des Endes der Ausführung durch.
Fig. 4A ist ein Blockdiagramm einer Objektdatei, die von
einem Kompilierer gemäß einer bevorzugten Ausführungsform
der vorliegenden Erfindung erzeugt wird, wobei die
Objektdateien von dem Kompilierer mit einer UDS 406 erzeugt
werden, um die Feststellung von Konflikten zwischen
Zuordnungen von globalen Registern durch das statische und
das Ablauf-Binderprogramm zu ermöglichen. Wie in Fig. 4A
gezeigt, umfaßt die Objektdatei 106 einen Code und Daten
402, eine Symboltabelle 404, eine Verschiebungstabelle 412
und eine UDS 406 gemäß der vorliegenden Erfindung. Die Art
und Weise, in der der Kompilierer 104 einen solchen Code
und Daten 402, die Symboltabelle 404 und die
Verschiebungstabelle 412 erzeugt, wird für Fachleute
ersichtlich sein. Gemäß der vorliegenden Erfindung
identifiziert der Kompilierer 104 nicht globale
Symbolkonflikte und führt keine Verschiebungen durch. Statt
dessen erzeugt der Kompilierer 104 Informationen 406 für
globale Symbole und globale Register und bettet solche
Informationen 406 in die Objektdatei 106 ein. Solche
Informationen 406 für globale Symbole und globale Register
umfassen Informationen über globale Symbole und globale
Register, die in der Quellendatei 102 definiert sind
und/oder auf die dort Bezug genommen wird, und umfassen
zusätzliche Informationen darüber, wie solche globalen
Symbole und globalen Register von der Quellendatei 102
verwendet werden. Die Informationen für globale Symbole und
globale Register sind in der UDS 406 verkörpert und werden
vom Kompilierer 104 erzeugt, um zu ermöglichen, daß das
anwendbare Binderprogramm 112 Konflikte von globalen
Symbolen und Konflikte von globalen Registern identifiziert
und je nachdem Verschiebungen durchführt, um Symbole
Speicherstellen und globalen Registern zuzuordnen. Die UDS
406 wird nachstehend weiter beschrieben.
Fig. 4B ist ein Blockdiagramm einer UDS 406 gemäß einer
Ausführungsform der vorliegenden Erfindung, einschließlich
einer Verwendungsinformation (UI) 440 und einer
Initialisierungsinformation (II) 441, um die Feststellung
von Konflikten zwischen Zuordnungen von globalen Registern
durch das statische und das Ablauf-Binderprogramm zu
ermöglichen. Die UI 440 ordnet Symbole speziellen globalen
Registern zu.
Fig. 4C ist ein Blockdiagramm des Protokolls für die UI
440 in der UDS 406 gemäß der vorliegenden Erfindung.
Insbesondere umfaßt das UI-Protokoll eine Nummer eines
globalen Registers (GRN) 450 und eine Information für ein
globales Symbol (GSI) 451.
Fig. 4D ist ein Blockdiagramm des Protokolls für die II
441 in einer UDS 406 gemäß der vorliegenden Erfindung.
Insbesondere enthält die II 441 einen Anfangswert (IV) für
jedes globale Register sowie Kennzeichen 461 zur
Bereitstellung einer Initialisierer-Anwesenheitsanzeige 471
und einer Anzeige 472 für die Abwesenheit eines Namens. Wie
vorstehend erörtert, identifiziert der Kompilierer 104
nicht Konflikte von globalen Symbolen und führt keine
Verschiebungen durch. Statt dessen wird die Identifikation
von Konflikten von globalen Symbolen von der
Kompilierungszeit bis zur Verknüpfungszeit verzögert. In
Schritt 506 von Fig. 5 erzeugt der Kompilierer 104
Informationen über globale Symbole und darüber, wie sie
verwendet werden. Solche Informationen werden
Symbolinformationen 406 genannt und werden in die UDS 406
gemäß einer Ausführungsform der vorliegenden Erfindung und
in die vom Kompilierer 104 erzeugte Objektdatei 106
eingebettet.
Fig. 5 ist ein Ablaufplan eines
Kompilierungs-/Verknüpfungsprozesses gemäß einer
bevorzugten Ausführungsform der vorliegenden Erfindung.
Insbesondere ist Fig. 5 ein Ablaufplan eines
Kompilierungs-/Verknüpfungsprozesses gemäß einer
bevorzugten Ausführungsform der vorliegenden Erfindung.
Fig. 5 zeigt einen Ablaufplan 502 gemäß der vorliegenden
Erfindung, der die problemorientierte Operation des
Kompilierers 104 und des anwendbaren der Binderprogramme
114, 118 darstellt. Der Kompilierer 104 führt den Schritt
506 aus, wenn die Quellendatei 104 kompiliert wird, und das
anwendbare der Binderprogramme 114, 118 führt den Schritt
508 aus, wenn die Objektdateien 106 und 108 und die
gemeinsam genutzten Bibliotheken 110 verarbeitet werden.
Der Ablaufplan 502 beginnt mit Schritt 504, wo die
Steuerung zu Schritt 506 übergeht. Der Kompilierer erzeugt
Tabelleneintragungen für globale Symbole, um anzugeben, wie
die zugehörige Objektdatei die anwendungsreservierten
globalen Register verwendet. Der Programmierer zeigt dem
Kompilierer beispielsweise durch Kennzeichen gemäß einer
weiteren Ausführungsform der vorliegenden Erfindung oder
dem Assemblierer durch Kennzeichen oder
Übersetzungsanweisungen gemäß einer Ausführungsform der
Erfindung an, welche die Verwendung der globalen Register
ist. In Schritt 506 erzeugt der Kompilierer 104 aus der
Quellendatei 102 eine Objektdatei 106. In Schritt 508
erzeugt das anwendbare der Binderprogramme 114, 118 eine
ausführbare Datei 116 und dann eine Ausführungsabbildung
120 aus den Objektdateien 106 und 108 und den gemeinsam
genutzten Bibliotheken 110. Wie vorstehend erörtert, führen
während der Erzeugung der ausführbaren Datei 116 und der
Ausführungsabbildung 120 das statische Binderprogramm 114
bzw. das Ablauf-Binderprogramm 118 jeweils eine Lesephase
306, eine Aufbauphase 308, eine Verschiebungsphase 310 und
eine Schreibphase 312 durch. Gemäß der vorliegenden
Erfindung werden diese Binderprogrammphasen 306, 308, 310
und 312 derart modifiziert, daß das statische
Binderprogramm 114 und das Ablauf-Binderprogramm 118
Konflikte von globalen Symbolen identifizieren und
Verschiebungen durchführen. Die Operation des statischen
Binderprogramms 114 und des Ablauf-Binderprogramms 118 wird
nachstehend weiter erörtert. Nachdem Schritt 508
vollständig ausgeführt ist, ist die Operation des
Ablaufplans 502 vollständig, wie durch Schritt 510
angezeigt. Das statische Binderprogramm 114 prüft diese
Symboltabelleneintragungen in allen Objektdateien, die zu
einer ausführbaren Datei oder gemeinsam genutzten
Bibliothek kombiniert werden, um sicherzustellen, daß die
globalen Register kompatibel verwendet werden. Das
resultierende Objekt enthält gemäß der vorliegenden
Erfindung Eintragungen in seiner Symboltabelle, um die
Verwendung der globalen Register des resultierenden Objekts
anzuzeigen. Das statische Binderprogramm warnt, wenn
irgendeine gemeinsam genutzte Bibliothek, auf die während
der Verknüpfung Bezug genommen wurde, globale Register in
einer mit dem erstellten Objekt inkompatiblen Weise
verwendet. Ferner erzeugt gemäß der vorliegenden Erfindung
das statische Binderprogramm eine Warnung, wenn ein
gemeinsam genutztes Objekt erstellt wird, das
anwendungsreservierte globale Register verwendet. Eine
ähnliche Warnung wird von einer Archivierungseinrichtung
ausgegeben, wenn eine Archivbibliothek erstellt wird, die
Objekte enthält, welche anwendungsreservierte globale
Register verwenden. Das dynamische Binderprogramm gemäß der
vorliegenden Erfindung prüft, ob alle Objektdateien, die in
den Zielprozeß eingebunden werden, kompatible Verwendungen
der anwendungsreservierten globalen Register aufweisen. Ein
dlopen() eines Objekts, das nicht mit dem Anwendungsprozeß
kompatibel ist, versagt beispielsweise mit einem Fehler.
Das Zwischensymbol gemäß der vorliegenden Erfindung wird
als Symbol behandelt, da ein Nullname nur einem Nullnamen
entspricht und Zwischenregister gemäß der vorliegenden
Erfindung einen globalen Gültigkeitsbereich besitzen.
Es folgt eine Matrix von zulässigen Kombinationen von
st_shndx für das gleiche Registersymbol:
Die Symbolinformationen 406 enthalten gemäß einer
Ausführungsform der vorliegenden Erfindung:
- 1. eine Symboltabelle 408, die eine Liste von globalen Symbolen enthält; und
- 2. eine Verschiebungstabelle 412, die eine Liste von globalen Symbolen enthält.
Unter Verwendung der Symbolinformationen 406 stellt das
Binderprogramm 114 oder 118, wie in Schritt 508 anwendbar,
den exakten Aufbau des globalen Symbols, das von einer
Anwendung verwendet wird, fest und erfüllt dann die
erforderlichen Verschiebungen. Die Symboltabelle 408 umfaßt
eine Vielzahl von Eintragungen, wobei jede Eintragung einem
Symbol entspricht. Diese Eintragungen werden von den
Binderprogrammen 114 und 118 während des
Verschiebungsprozesses verwendet.
Fig. 6 ist ein detaillierter Ablaufplan der
Verknüpfungsverarbeitung gemäß einer bevorzugten
Ausführungsform der vorliegenden Erfindung. Fig. 6 ist ein
detaillierter Ablaufplan eines Binderprogramms, der im
allgemeinen in vier Phasen unterteilt werden kann: eine
Lesephase 306, eine Aufbauphase 308, eine
Verschiebungsphase 310 und eine Schreibphase 312, wie
vorstehend mit Bezug auf Fig. 3 angegeben. Gemäß der
vorliegenden Erfindung werden diese Binderprogrammphasen
306, 308, 310 und 312 derart umstrukturiert, daß das
anwendbare Binderprogramm Konflikte von globalen Symbolen
auf der Basis der Informationen, die in einer oder mehreren
der einheitlichen Datenstrukturen (UDS) 406 enthalten sind,
identifiziert. Solche Modifikationen sind in einem
Ablaufplan 602 gezeigt, der in Fig. 6 dargestellt ist.
Insbesondere wird Schritt 606 vorzugsweise in der Lesephase
306 ausgeführt, um die in den ausgewählten Objekten
gefundenen Informationen für die globalen Symbole zu
mischen. Schritt 608 der Binderprogrammoperation wird
vorzugsweise zwischen der Lesephase 306 und der Aufbauphase
308 ausgeführt, welcher die Identifizierung von Konflikten
von globalen Registern durchführt. Die Schritte 612 und 614
werden vorzugsweise zwischen der Aufbauphase 308 und der
Verschiebungsphase 310 während der Operation des
anwendbaren Binderprogramms ausgeführt. Schritt 616
betrifft Verschiebungen zu modifizierten Speicheradressen
oder globalen Registern und wird vorzugsweise während der
Verschiebungsphase 310 ausgeführt. Der Ablaufplan 602 soll
nun ausführlicher beschrieben werden. Der Ablaufplan 602
beginnt insbesondere mit Schritt 604, wo die Steuerung
unmittelbar zu Schritt 606 übergeht, um die Vereinigung der
Informationen für die globalen Symbole durchzuführen. In
Schritt 606 liest das anwendbare Binderprogramm in den
Objektdateien 106, 108 und den gemeinsam genutzten
Bibliotheken 110 und mischt die Informationen 406 für die
globalen Symbole, die in der UDS 406 enthalten sind,
miteinander. Ferner mischt das anwendbare Binderprogramm
die in diesen Dateien enthaltene UDS 406 miteinander, um
eine gemischte UDS zu erzeugen. Ebenso mischt das
anwendbare Binderprogramm die Verschiebungstabellen 412
miteinander, um eine gemischte Klassenverschiebungstabelle
zu erzeugen. Als nächstes identifiziert in Schritt 608 das
anwendbare Binderprogramm Konflikte von globalen Symbolen.
Insbesondere verarbeitet das anwendbare Binderprogramm die
gemischten Tabellen und stellt den Aufbau jedes Symbols
(beispielsweise die Größe und Ausrichtung jedes Symbols,
die Anzahl der Felder, die Datentypen der Felder, die
Anzahl der Bytes vom oberen Ende des Symbols zu jedem der
Felder usw.) fest. Das anwendbare Binderprogramm erstellt
insbesondere eine separate Datenstruktur für jedes Symbol
und speichert diese symbolspezifischen Informationen in
solchen separaten Datenstrukturen. Diese Datenstrukturen
werden für Bezugszwecke "Aufbau-Datenstrukturen" genannt.
Nach Vollendung von Schritt 608 kennt das anwendbare
Binderprogramm viel von den zu einem Symbol gehörenden
Informationen, die von einem Kompilierer erzeugt wurden.
Gemäß Schritt 610 werden Konflikte von globalen Symbolen
identifiziert. In Schritt 612 wertet das anwendbare
Binderprogramm die Symbole in der gemischten UDS aus.
Insbesondere stellt das anwendbare Binderprogramm den Wert
des Symbols in jeder Eintragung der gemischten
Symboltabelle fest und speichert diesen Wert im Wertefeld
dieser Eintragung. Man betrachte beispielsweise die
beispielhafte UDS 406 in Fig. 4B. Das anwendbare
Binderprogramm stellt die Werte von speziellen Eintragungen
durch Bezugnahme auf eine zugehörige Aufbau-Datenstruktur
fest. Das anwendbare Binderprogramm speichert diese Werte
in den Wertefeldern der Eintragungen der UDS 406, die in
der UI 440 der UDS 406 enthalten sind. Die Art und Weise,
in der das Binderprogramm 112 die Werte von anderen
Symboltypen berechnet, ist vorstehend beschrieben. In
Schritt 614 initialisiert das anwendbare Binderprogramm
globale Registerstrukturen. Insbesondere erzeugt das
anwendbare Binderprogramm während Schritt 614 Tabellen und
Tabellenzeiger-Informationstabellen einschließlich UDSs 406
und speichert diese Tabellen in den entsprechenden
Datenstrukturen, die zugewiesen wurden. In Schritt 616
führt das anwendbare Binderprogramm die in den Eintragungen
der gemischten Verschiebungstabelle festgelegten
Verschiebungen durch. Die Art und Weise, in der das
anwendbare Binderprogramm diese Funktion ausführt, ist
vorstehend beschrieben. Nachdem Schritt 616 vollständig
durchgeführt ist, ist die Operation des Ablaufplans 602
vollständig, wie durch Schritt 618 angezeigt. Wie für
Fachleute ersichtlich ist, wird die vorstehend beschriebene
Operation des anwendbaren Binderprogramms in der Praxis vom
statischen Binderprogramm 114 und vom Ablauf-Binderprogramm
118 gemeinsam durchgeführt. Ob die vorstehend beschriebenen
Operationen vom statischen Binderprogramm 114 oder vom
Ablauf-Binderprogramm 118 durchgeführt werden, ist bei der
vorliegenden Erfindung nicht von Bedeutung. Vorzugsweise
versucht jedoch das statische Binderprogramm 114
ausführbare und gemeinsam genutzte Objekte vorab zu
verknüpfen, so daß, wenn sich die ausführbaren und
gemeinsam genutzten Objekte im gleichen Zustand befinden
wie bei ihrer Erstellung, dann das Ablauf-Binderprogramm
118 nur die Dateien laden und den Ablauf starten muß. In
der Praxis kann das Ablauf-Binderprogramm 118 viele der
Verschiebungen, die vom statischen Binderprogramm 114
durchgeführt wurden, noch einmal ausführen müssen.
Fig. 7 ist ein Ablaufplan einer Operation gemäß der
vorliegenden Erfindung, bei der eine einheitliche
Datenstruktur (UDS) 406, die von einem Kompilierer gemäß
einer bevorzugten Ausführungsform der vorliegenden
Erfindung erzeugt wurde, in der ein Symbol, das in einer
Symboltabelle definiert wurde, einem globalen Register
zugeordnet wird, und ein spezieller Wert in der UDS 406
vorgesehen ist, um das spezielle globale Register zu
initialisieren. Fig. 7 ist ein Beispiel für die Verwendung
einer einheitlichen Datenstruktur, die von einem
Kompilierer gemäß einer bevorzugten Ausführungsform der
vorliegenden Erfindung erzeugt wurde. Der Ablaufplan gemäß
Fig. 7 zeigt einen ersten bzw. zweiten Schritt 715 und
716. Das Verfahren der vorliegenden Erfindung verwendet
eine Information, die den Symboltyp identifiziert, und eine
Information, die den Wert des Symbols für diese Klasse
angibt. Die Informationen für spezielle Symbole wie z. B.
zusätzliche Felder und ein Symbolname. Der Symbolname
enthält, wenn er passend ist, den Namen einer Eintragung.
Die Liste der Symboltypen ist spezifisch für die
Implementierung und hängt von einer Anzahl von Faktoren ab,
wie z. B. der Computerprogrammiersprache und dem
Zielcomputer. Beispielhafte Symboltypen werden für
Fachleute ersichtlich sein. Wie nachstehend beschrieben,
berechnet das anwendbare Binderprogramm die Werte der
Symbole, auf die in der UDS 406 gemäß der vorliegenden
Erfindung verwiesen wird, vor der Verarbeitung der
Verschiebungseintragungen in der Verschiebungstabelle 412.
Bei der Verarbeitung jeder Verschiebungseintragung wird der
Wert aus der Symboltabelle entnommen und wird an der
gegebenen Adresse gemäß dem Typ der Verschiebungseintragung
gespeichert. Insbesondere wird die Verarbeitung
unternommen, um die Verschiebungseintragungen in der
Verschiebungstabelle 412 festzulegen, das anwendbare
Binderprogramm wertet die Symboleintragungen in der UDS 406
aus. Das anwendbare Binderprogramm fügt einen speziellen
Wert in das Wertefeld der Symboleintragung ein. Gemäß der
vorliegenden Erfindung fügt das anwendbare Binderprogramm
diesen Wert (8 Bytes) in das Wertefeld der Symboleintragung
ein. Während die Verarbeitung eine Datenverschiebungs
eintragung umfaßt, ersetzt das anwendbare Binderprogramm
gemäß der vorliegenden Erfindung einen Platzhalter in der
Anweisung an einer speziellen Adresse durch einen Wert in
der Symboleintragung. Dies ist der Fall, wenn der Zeiger in
der Verschiebungseintragung auf die Symboleintragung
verweist. Ebenso ersetzt das anwendbare Binderprogramm
während der Verarbeitung der Verschiebungseintragung die 0
in der Anweisung an einer speziellen Adresse durch den Wert
in der Symboleintragung. Während der Verarbeitung der
Verschiebungseintragung ersetzt das anwendbare
Binderprogramm den Wert in der Anweisung an einer
speziellen Adresse durch den Wert in der Symboleintragung.
Ein Registersymbol in einer UDS 406 gemäß einer
Ausführungsform der vorliegenden Erfindung wird durch einen
speziellen Symboltyp angezeigt:
Eine Symboltabelleneintragung für ein Registersymbol gemäß
einer Ausführungsform der vorliegenden Erfindung umfaßt:
st_name: Index in die Zeichenfolgetabelle des Namens des
Symbols. Ein Indexwert von 0, der auf den
Nullnamen in der Zeichenfolgetabelle verweist,
zeigt an, daß das Register als Zwischenregister
verwendet wird. Ein Zwischenregister muß die
Bindung STB_GLOBAL aufweisen.
st_value: Registernummer. Registernummern entsprechen den Zuordnungen im SPARC-Architektur-Handbuch für Ganzzahlenregister.
st_size: unbenutzt (0)
st_info: ELF 64_ST_INFO (bind.type)
bind ist typischerweise STB_GLOBAL, spiegelt jedoch nicht den tatsächlichen angegebenen Gültigkeitsbereich des Namens wider (das heißt, es könnte STB_WEAK oder STB_LOCAL sein). type muß STT_REGISTER (13) sein.
st_other: unbenutzt(0)
st_shndx: SHN_ABS, wenn dieses Objekt dieses Registersymbol initialisiert; ansonsten SHN_UNDEF. Ein Initialisierer für ein SHN_ABS Registersymbol wird mit einem speziellen Registerverschiebungstyp festgelegt.
st_value: Registernummer. Registernummern entsprechen den Zuordnungen im SPARC-Architektur-Handbuch für Ganzzahlenregister.
st_size: unbenutzt (0)
st_info: ELF 64_ST_INFO (bind.type)
bind ist typischerweise STB_GLOBAL, spiegelt jedoch nicht den tatsächlichen angegebenen Gültigkeitsbereich des Namens wider (das heißt, es könnte STB_WEAK oder STB_LOCAL sein). type muß STT_REGISTER (13) sein.
st_other: unbenutzt(0)
st_shndx: SHN_ABS, wenn dieses Objekt dieses Registersymbol initialisiert; ansonsten SHN_UNDEF. Ein Initialisierer für ein SHN_ABS Registersymbol wird mit einem speziellen Registerverschiebungstyp festgelegt.
Die Abwesenheit einer Eintragung für ein spezielles
globales Register bedeutet, daß dieses spezielle globale
Register von dem Objekt nicht verwendet wird. Ein Objekt
gemäß der vorliegenden Erfindung verwendet ein oder mehrere
der anwendungsreservierten globalen Register und zeigt
diese Verwendung mit einer geeigneten
Symboltabelleneintragung an. Das folgende Kennzeichen einer
dynamischen Feldgruppe wird beispielsweise gemäß einer
Ausführungsform der vorliegenden Erfindung zur
Symboltabelle hinzugefügt:
Der Kompilierer 104 erzeugt einen Code, der zur
Verknüpfungszeit verschoben wird. Wenn auf eine Variable in
einer Quellendatei Bezug genommen wird, erzeugt der
Kompilierer 104 gemäß der vorliegenden Erfindung eine
einheitliche Datenstruktur 406, eine Symboltabelle 408 und
eine Verschiebungstabelle 412. Die einheitliche
Datenstruktur gemäß der vorliegenden Erfindung legt den
Initialisierungswert für jedes anwendbare globale Register
fest und enthält Informationen, die spezielle Symbole mit
einem speziellen globalen Register in Beziehung bringen,
was ermöglicht, daß jedes anwendbare Binderprogramm das
Symbol und das Register, mit dem es in Beziehung steht,
zuordnet. Das anwendbare Binderprogramm, das die Zuordnung
zwischen dem Symbol und dem globalen Register auf der Basis
der Informationen in der einheitlichen Datenstruktur
implementiert, prüft dann auf Symbolkonflikte auf der Basis
einer mehrfachen Symbolzuordnung zu demselben globalen
Register.
Obwohl verschiedene Ausführungsformen der vorliegenden
Erfindung vorstehend beschrieben wurden, sollte es
selbstverständlich sein, daß sie nur als Beispiel und nicht
als Begrenzung dargestellt wurden. Folglich sollten die
Breite und der Schutzbereich der vorliegenden Erfindung
nicht durch irgendeine der vorstehend beschriebenen
beispielhaften Ausführungsformen begrenzt werden, sondern
sollten nur gemäß den folgenden Ansprüchen und ihren
Äquivalenten definiert sein.
Claims (15)
1. Verfahren zum Kompilieren einer Quellendatei,
umfassend:
Erzeugen von Informationen für globale Register, die globale Variablen betreffen, auf die in der Quellendatei Bezug genommen wird;
Erzeugen, durch den Kompilierer, einer Objektdatei aus der Quellendatei, wobei die Objektdatei eine einheitliche Datenstruktur umfaßt, die die Informationen für globale Register enthält; und
Auswerten der Objektdatei unter Verwendung der Informationen für globale Register, um Variablenkonflikte von globalen Registern zu identifizieren.
Erzeugen von Informationen für globale Register, die globale Variablen betreffen, auf die in der Quellendatei Bezug genommen wird;
Erzeugen, durch den Kompilierer, einer Objektdatei aus der Quellendatei, wobei die Objektdatei eine einheitliche Datenstruktur umfaßt, die die Informationen für globale Register enthält; und
Auswerten der Objektdatei unter Verwendung der Informationen für globale Register, um Variablenkonflikte von globalen Registern zu identifizieren.
2. Verfahren nach Anspruch 1, wobei die einheitliche
Datenstruktur den Vorschriften der SPARC-Architektur
entspricht.
3. Verfahren nach Anspruch 1, einschließlich Kombinieren
der einheitlichen Datenstrukturen der zu einer ausführbaren
Datei zu verknüpfenden Objektdateien zu einer einheitlichen
Datenstruktur, um die Beziehung zwischen ausgewählten
Symbolen und speziellen globalen Registern festzustellen.
4. Verfahren nach Anspruch 2, umfassend:
Auswählen eines globalen Registers;
Feststellen, ob mehr als eine Symbolbezugnahme auf das spezielle globale Register durchgeführt wird; und
Feststellen, ob eine spezielle Mehrzahl von Symbolbezugnahmen für das spezielle globale Register einen Konflikt darstellt.
Auswählen eines globalen Registers;
Feststellen, ob mehr als eine Symbolbezugnahme auf das spezielle globale Register durchgeführt wird; und
Feststellen, ob eine spezielle Mehrzahl von Symbolbezugnahmen für das spezielle globale Register einen Konflikt darstellt.
5. Verfahren nach Anspruch 3, einschließlich der
Bereitstellung von Diagnoseinformationen für den Benutzer,
falls ein Konflikt identifiziert wird.
6. Verfahren nach Anspruch 2, umfassend:
Identifizieren eines ausgewählten globalen Registers mit einem ausgewählten Symbol; und
Feststellen, ob das Symbol in jeder mit einer gemeinsamen ausführbaren Datei zu verknüpfenden Objektdatei konsistent definiert ist.
Identifizieren eines ausgewählten globalen Registers mit einem ausgewählten Symbol; und
Feststellen, ob das Symbol in jeder mit einer gemeinsamen ausführbaren Datei zu verknüpfenden Objektdatei konsistent definiert ist.
7. System zum Kompilieren einer Quellendatei, umfassend:
einen Kompilierer mit einem Informationsgenerator, der konfiguriert ist, um in einer einheitlichen Datenstruktur zu speichernde Informationen zu erzeugen, welche globale Variablen betreffen, auf die in der Quellendatei Bezug genommen wird;
einen Objektdateigenerator, der konfiguriert ist, um aus der Quellendatei eine Objektdatei zu erzeugen, wobei die Objektdatei eine einheitliche Datenstruktur enthält, die konfiguriert ist, um die Identifikation von Konflikten von globalen Registern zu ermöglichen; und
einen Generator, der konfiguriert ist, um eine ausführbare Datei zu erzeugen, und dazu ausgelegt ist, die in der Objektdatei enthaltenen Symbolinformationen zu verwenden, um Symbolkonflikte bezüglich vorbestimmten globalen Registern zu identifizieren.
einen Kompilierer mit einem Informationsgenerator, der konfiguriert ist, um in einer einheitlichen Datenstruktur zu speichernde Informationen zu erzeugen, welche globale Variablen betreffen, auf die in der Quellendatei Bezug genommen wird;
einen Objektdateigenerator, der konfiguriert ist, um aus der Quellendatei eine Objektdatei zu erzeugen, wobei die Objektdatei eine einheitliche Datenstruktur enthält, die konfiguriert ist, um die Identifikation von Konflikten von globalen Registern zu ermöglichen; und
einen Generator, der konfiguriert ist, um eine ausführbare Datei zu erzeugen, und dazu ausgelegt ist, die in der Objektdatei enthaltenen Symbolinformationen zu verwenden, um Symbolkonflikte bezüglich vorbestimmten globalen Registern zu identifizieren.
8. System nach Anspruch 7, welches ferner einen
Mechanismus umfaßt, der konfiguriert ist, um den Inhalt der
einheitlichen Datenstruktur auszuwerten, um festzustellen,
ob Symbolkonflikte bezüglich speziellen globalen Registern
vorliegen.
9. System nach Anspruch 8, wobei das System umfaßt:
einen Vergleichsmechanismus, der konfiguriert ist, um den Inhalt von einheitlichen Datenstrukturen bezüglich spezieller Objektdateien, die verknüpft werden sollen, zu vergleichen.
einen Vergleichsmechanismus, der konfiguriert ist, um den Inhalt von einheitlichen Datenstrukturen bezüglich spezieller Objektdateien, die verknüpft werden sollen, zu vergleichen.
10. System nach Anspruch 8, welches ein Mittel zum
Identifizieren von Konflikten von globalen Registern
umfaßt.
11. System nach Anspruch 10, wobei das System einen
Mechanismus umfaßt, der zur Durchführung von
Identifikationsoperationen für Konflikte von globalen
Registern ausgelegt ist.
12. Computerprogrammprodukt mit einem maschinenlesbaren
Medium mit einer darauf aufgezeichneten Programmlogik, um
zu ermöglichen, daß ein Computersystem eine Quellendatei
kompiliert, wobei das Computerprogrammprodukt umfaßt:
einen Symbolinformationen-Erzeugungsmechanismus, um zu ermöglichen, daß das Computersystem während der Kompilierungszeit in einer einheitlichen Datenstruktur Informationen erzeugt, die globale Variablen betreffen, auf die in der Quellendatei Bezug genommen wird;
eine Objektdateierzeugung, um zu ermöglichen, daß das Computersystem während der Kompilierungszeit aus der Quellendatei eine Objektdatei erzeugt; und
einen Systemmechanismus zur Feststellung von Konflikten von globalen Registern, um zu ermöglichen, daß das Computersystem während der Verknüpfungszeit Symbolkonflikte von globalen Registern auswertet.
einen Symbolinformationen-Erzeugungsmechanismus, um zu ermöglichen, daß das Computersystem während der Kompilierungszeit in einer einheitlichen Datenstruktur Informationen erzeugt, die globale Variablen betreffen, auf die in der Quellendatei Bezug genommen wird;
eine Objektdateierzeugung, um zu ermöglichen, daß das Computersystem während der Kompilierungszeit aus der Quellendatei eine Objektdatei erzeugt; und
einen Systemmechanismus zur Feststellung von Konflikten von globalen Registern, um zu ermöglichen, daß das Computersystem während der Verknüpfungszeit Symbolkonflikte von globalen Registern auswertet.
13. In einem Computersystem mit einem Prozessor und einer
Steuereinheit, um zu ermöglichen, daß der Prozessor
mindestens eine einzelne Quellendatei kompiliert und
verknüpft, wobei die Steuereinheit umfaßt:
einen Symbolinformationsmechanismus, um zu ermöglichen, daß der Prozessor während der Kompilierungszeit in einer einheitlichen Datenstruktur Informationen erzeugt, die globale Variablen betreffen, auf die in der mindestens einen einzelnen Quellendatei Bezug genommen wird;
einen Objektdatei-Erzeugungsmechanismus, um zu ermöglichen, daß der Prozessor während der Kompilierungszeit aus der Quellendatei mindestens eine einzelne Objektdatei erzeugt, wobei die mindestens eine einzelne Objektdatei mindestens eine einzelne einheitliche Datenstruktur, um die Identifikation von Konflikten von globalen Registern zur Verknüpfungszeit zu ermöglichen, umfaßt; und
ein Binderprogramm, um zu ermöglichen, daß der Prozessor während der Verknüpfungszeit die Objektdatei mit Null oder mehr Objektdateien verknüpft, um dadurch eine ausführbare Datei zu erzeugen, wobei das Binderprogramm einen Mechanismus zur Verwendung der in der Objektdatei enthaltenen Informationen zur Identifikation von Konflikten von globalen Registern umfaßt.
einen Symbolinformationsmechanismus, um zu ermöglichen, daß der Prozessor während der Kompilierungszeit in einer einheitlichen Datenstruktur Informationen erzeugt, die globale Variablen betreffen, auf die in der mindestens einen einzelnen Quellendatei Bezug genommen wird;
einen Objektdatei-Erzeugungsmechanismus, um zu ermöglichen, daß der Prozessor während der Kompilierungszeit aus der Quellendatei mindestens eine einzelne Objektdatei erzeugt, wobei die mindestens eine einzelne Objektdatei mindestens eine einzelne einheitliche Datenstruktur, um die Identifikation von Konflikten von globalen Registern zur Verknüpfungszeit zu ermöglichen, umfaßt; und
ein Binderprogramm, um zu ermöglichen, daß der Prozessor während der Verknüpfungszeit die Objektdatei mit Null oder mehr Objektdateien verknüpft, um dadurch eine ausführbare Datei zu erzeugen, wobei das Binderprogramm einen Mechanismus zur Verwendung der in der Objektdatei enthaltenen Informationen zur Identifikation von Konflikten von globalen Registern umfaßt.
14. Steuereinheit, um zu ermöglichen, daß ein Prozessor
mindestens eine einzelne Quellendatei kompiliert und
verknüpft, wobei die Steuereinheit umfaßt:
ein Informationserzeugungsmittel, um zu ermöglichen, daß der Prozessor während der Kompilierungszeit Informationen erzeugt, die globale Symbole betreffen, auf die in der mindestens einen einzelnen Quellendatei Bezug genommen wird;
ein Objektdatei-Erzeugungsmittel, um zu ermöglichen, daß der Prozessor während der Kompilierungszeit aus jeder Quellendatei eine entsprechende Objektdatei erzeugt, wobei jede Objektdatei eine einheitliche Datenstruktur, um die Identifikation von Konflikten von globalen Registern zur Verknüpfungszeit zu ermöglichen, umfaßt; und
ein Verknüpfungsmittel, um zu ermöglichen, daß der Prozessor während der Verknüpfungszeit die Objektdatei mit mindestens einer von einer weiteten Objektdatei und einer gemeinsam genutzten Bibliothek verknüpft, um dadurch eine ausführbare Datei zu erzeugen, wobei das Verknüpfungsmittel ein Mittel zur Verwendung der in der Objektdatei enthaltenen Informationen zur Identifikation von Konflikten von globalen Registern umfaßt.
ein Informationserzeugungsmittel, um zu ermöglichen, daß der Prozessor während der Kompilierungszeit Informationen erzeugt, die globale Symbole betreffen, auf die in der mindestens einen einzelnen Quellendatei Bezug genommen wird;
ein Objektdatei-Erzeugungsmittel, um zu ermöglichen, daß der Prozessor während der Kompilierungszeit aus jeder Quellendatei eine entsprechende Objektdatei erzeugt, wobei jede Objektdatei eine einheitliche Datenstruktur, um die Identifikation von Konflikten von globalen Registern zur Verknüpfungszeit zu ermöglichen, umfaßt; und
ein Verknüpfungsmittel, um zu ermöglichen, daß der Prozessor während der Verknüpfungszeit die Objektdatei mit mindestens einer von einer weiteten Objektdatei und einer gemeinsam genutzten Bibliothek verknüpft, um dadurch eine ausführbare Datei zu erzeugen, wobei das Verknüpfungsmittel ein Mittel zur Verwendung der in der Objektdatei enthaltenen Informationen zur Identifikation von Konflikten von globalen Registern umfaßt.
15. System zum Kompilieren einer Quellendatei, umfassend:
einen Kompilierer, der ein Informationserzeugungs mittel zum Erzeugen von Informationen, die in einer einheitlichen Datenstruktur gespeichert werden sollen, welche globale Variablen betreffen, auf die in der Quellendatei Bezug genommen wird, umfaßt, wobei die Informationen die Identifikation von Symbolkonflikten während der Verknüpfungszeit gestatten, und
ein Objektdatei-Erzeugungsmittel zum Erzeugen einer Objektdatei aus der Quellendatei, wobei die Objektdatei eine einheitliche Datenstruktur umfaßt, die konfiguriert ist, um die Identifikation von Konflikten von globalen Registern zu ermöglichen; und
ein Mittel zum Erzeugen einer ausführbaren Datei, wobei das Mittel zum Erzeugen zur Verwendung der in der Objektdatei enthaltenen Symbolinformationen zur Identifizierung von Symbolkonflikten bezüglich vorbestimmter globaler Register ausgelegt ist.
einen Kompilierer, der ein Informationserzeugungs mittel zum Erzeugen von Informationen, die in einer einheitlichen Datenstruktur gespeichert werden sollen, welche globale Variablen betreffen, auf die in der Quellendatei Bezug genommen wird, umfaßt, wobei die Informationen die Identifikation von Symbolkonflikten während der Verknüpfungszeit gestatten, und
ein Objektdatei-Erzeugungsmittel zum Erzeugen einer Objektdatei aus der Quellendatei, wobei die Objektdatei eine einheitliche Datenstruktur umfaßt, die konfiguriert ist, um die Identifikation von Konflikten von globalen Registern zu ermöglichen; und
ein Mittel zum Erzeugen einer ausführbaren Datei, wobei das Mittel zum Erzeugen zur Verwendung der in der Objektdatei enthaltenen Symbolinformationen zur Identifizierung von Symbolkonflikten bezüglich vorbestimmter globaler Register ausgelegt ist.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/087,264 US6351848B1 (en) | 1998-05-29 | 1998-05-29 | Unitary data structure systems, methods, and computer program products, for global conflict determination |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| DE19924702A1 true DE19924702A1 (de) | 2000-03-09 |
Family
ID=22204121
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE19924702A Withdrawn DE19924702A1 (de) | 1998-05-29 | 1999-05-28 | Systeme mit einheitlicher Datenstruktur, Verfahren und Computerprogrammprodukte zur Feststellung von globalen Konflikten |
Country Status (4)
| Country | Link |
|---|---|
| US (2) | US20020032901A1 (de) |
| JP (1) | JP2000010790A (de) |
| DE (1) | DE19924702A1 (de) |
| GB (1) | GB2342199B (de) |
Families Citing this family (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| GB9920916D0 (en) * | 1999-09-03 | 1999-11-10 | Sgs Thomson Microelectronics | A relocation format for linking |
| US7024663B2 (en) | 2002-07-10 | 2006-04-04 | Micron Technology, Inc. | Method and system for generating object code to facilitate predictive memory retrieval |
| US6954836B2 (en) * | 2002-07-11 | 2005-10-11 | Micron Technology, Inc. | System and method for processor with predictive memory retrieval assist |
| CA2651461A1 (en) * | 2003-12-17 | 2005-06-17 | Ibm Canada Limited - Ibm Canada Limitee | Relationship management for data modeling in an integrated development environment |
| US8136094B2 (en) * | 2004-01-07 | 2012-03-13 | International Business Machines Corporation | Relationship management for data modeling in an integrated development environment |
| JP4712512B2 (ja) * | 2005-10-14 | 2011-06-29 | 富士通株式会社 | プログラム変換プログラム、プログラム変換装置、プログラム変換方法 |
| US7797684B2 (en) | 2005-11-04 | 2010-09-14 | Oracle America, Inc. | Automatic failure analysis of code development options |
| US20070168969A1 (en) * | 2005-11-04 | 2007-07-19 | Sun Microsystems, Inc. | Module search failure analysis |
| US8136101B2 (en) * | 2005-11-04 | 2012-03-13 | Oracle America, Inc. | Threshold search failure analysis |
| US8046742B1 (en) * | 2007-02-02 | 2011-10-25 | Sandia Corporation | Self-assembling software generator |
| GB0808575D0 (en) * | 2008-05-12 | 2008-06-18 | Xmos Ltd | Compilign and linking |
| US9489529B2 (en) * | 2011-10-13 | 2016-11-08 | Stewart A. Baker | Data security system |
| US9753710B2 (en) * | 2013-11-07 | 2017-09-05 | Netronome Systems, Inc. | Resource allocation with hierarchical scope |
| US9672030B2 (en) * | 2015-10-14 | 2017-06-06 | International Business Machines Corporation | Generating comprehensive symbol tables for source code files |
| US10877735B1 (en) * | 2017-09-25 | 2020-12-29 | Amazon Technologies, Inc. | Automated generation of software applications using analysis of submitted content items |
| US10740550B1 (en) | 2017-11-20 | 2020-08-11 | Amazon Technologies, Inc. | Network-accessible data management service with web-of-sheets data model |
| JP6950635B2 (ja) * | 2018-07-03 | 2021-10-13 | オムロン株式会社 | コンパイル装置およびコンパイル方法 |
| US12223262B1 (en) | 2019-03-27 | 2025-02-11 | Amazon Technologies, Inc. | Expressions management service for data sheet-based applications |
Family Cites Families (16)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| EP0423989A3 (en) | 1989-10-16 | 1992-09-23 | Hewlett-Packard Company | Software compiler and linker with improved line number table |
| US5428793A (en) * | 1989-11-13 | 1995-06-27 | Hewlett-Packard Company | Method and apparatus for compiling computer programs with interproceduural register allocation |
| US5165038A (en) * | 1989-12-29 | 1992-11-17 | Supercomputer Systems Limited Partnership | Global registers for a multiprocessor system |
| US5524255A (en) * | 1989-12-29 | 1996-06-04 | Cray Research, Inc. | Method and apparatus for accessing global registers in a multiprocessor system |
| DE4129614C2 (de) * | 1990-09-07 | 2002-03-21 | Hitachi Ltd | System und Verfahren zur Datenverarbeitung |
| US5630157A (en) * | 1991-06-13 | 1997-05-13 | International Business Machines Corporation | Computer organization for multiple and out-of-order execution of condition code testing and setting instructions |
| US5339428A (en) * | 1991-09-04 | 1994-08-16 | Digital Equipment Corporation | Compiler allocating a register to a data item used between a use and store of another data item previously allocated to the register |
| US5481708A (en) * | 1992-06-05 | 1996-01-02 | Borland International, Inc. | System and methods for optimizing object-oriented compilations |
| US5367651A (en) | 1992-11-30 | 1994-11-22 | Intel Corporation | Integrated register allocation, instruction scheduling, instruction reduction and loop unrolling |
| US5375241A (en) * | 1992-12-21 | 1994-12-20 | Microsoft Corporation | Method and system for dynamic-link library |
| US5375242A (en) | 1993-09-29 | 1994-12-20 | Hewlett-Packard Company | Compiler architecture for cross-module optimization |
| US5835743A (en) * | 1994-06-30 | 1998-11-10 | Sun Microsystems, Inc. | Application binary interface and method of interfacing binary application program to digital computer |
| US5680622A (en) * | 1994-06-30 | 1997-10-21 | Borland International, Inc. | System and methods for quickly detecting shareability of symbol and type information in header files |
| US5613120A (en) * | 1994-10-20 | 1997-03-18 | Silicon Graphics, Inc. | System and method for enabling, without recompilation, modification of class definitions and implementations in an object-oriented computer program |
| US5890000A (en) * | 1996-12-04 | 1999-03-30 | International Business Machines Corporation | Cooperation of global and local register allocators for better handling of procedures |
| US6298479B1 (en) * | 1998-05-29 | 2001-10-02 | Sun Microsystems, Inc. | Method and system for compiling and linking source files |
-
1998
- 1998-05-29 US US09/087,264 patent/US20020032901A1/en active Granted
- 1998-05-29 US US09/087,264 patent/US6351848B1/en not_active Expired - Lifetime
-
1999
- 1999-05-21 GB GB9911951A patent/GB2342199B/en not_active Expired - Fee Related
- 1999-05-26 JP JP11146387A patent/JP2000010790A/ja active Pending
- 1999-05-28 DE DE19924702A patent/DE19924702A1/de not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| GB9911951D0 (en) | 1999-07-21 |
| US6351848B1 (en) | 2002-02-26 |
| JP2000010790A (ja) | 2000-01-14 |
| GB2342199A (en) | 2000-04-05 |
| GB2342199B (en) | 2003-08-13 |
| US20020032901A1 (en) | 2002-03-14 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE19924702A1 (de) | Systeme mit einheitlicher Datenstruktur, Verfahren und Computerprogrammprodukte zur Feststellung von globalen Konflikten | |
| DE69622305T2 (de) | Verfahren und Gerät für einen optimierenden Kompiler | |
| DE69516891T2 (de) | Verfahren zum übersetzen von quellkode aus einer computer-hochsprache in eine andere | |
| DE69404439T2 (de) | Programmodellierungssystem. | |
| EP0502857B1 (de) | Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems | |
| DE69615637T2 (de) | Verfahren zur objektorientierten Programmierung mit dynamischer Schnittstelle | |
| DE60010420T2 (de) | Automatisches Regressionstesten von Arbeitsplatz-Software | |
| DE69232761T2 (de) | Verfahren und vorrichtung zur aenderung von dynamische zuweisbaren objektcodedateien | |
| DE69032418T2 (de) | Privatspeicher für Fäden in einem multifaden digitalen Datenverarbeitungssystem | |
| DE69230707T2 (de) | An das Ziel anpassbares Informationsverarbeitungssystem | |
| DE68926956T2 (de) | Anordnung zur teilung eines generischen kodes für ein digitales datenverarbeitungssystem | |
| DE69316210T2 (de) | Fehlerbeseitiger, der die zuordnung zwischen dem quellprogramm und optimierten objektcode beinhaltet. | |
| DE19815865B4 (de) | Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen | |
| DE69707752T2 (de) | Verfahren und System zur Klassenspeicherung in einem Festspeicher | |
| DE69932371T2 (de) | Verschiebbare Instrumentationskennzeichen für die Prüfung und die Fehlerbeseitigung eines Computerprogramms | |
| DE3750515T2 (de) | Verfahren zur Zugriffssteuerung einer Datenbasis. | |
| DE69621381T2 (de) | Verfahren und Vorrichtung zur internen Versionsbildung von Objekten unter Verwendung einer Datei | |
| DE69924857T2 (de) | Programm-kode-umwandlung | |
| EP0689694B1 (de) | Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren | |
| DE69125755T2 (de) | Kompilerzwischensprache verwendender Installierer für architekturunabhängiges Vertriebsformat (AUVF) | |
| DE69832932T2 (de) | Programmkonvertiergerät für konstantenrekonstruierenden VLIW Prozessor | |
| DE69326004T2 (de) | Testapparat mit grosser Kapazität | |
| DE2417795C2 (de) | Datenverarbeitungsanlage | |
| DE69225543T2 (de) | System und verfahren zum automatischen verbinden von programmaufrufvereinbarungen zwischen zwei verschiedenen programmeinheiten | |
| DE19945992A1 (de) | Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| OP8 | Request for examination as to paragraph 44 patent law | ||
| 8130 | Withdrawal |