[go: up one dir, main page]

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 Konflikten

Info

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
Application number
DE19924702A
Other languages
English (en)
Inventor
Stephen Alan Chessin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE19924702A1 publication Critical patent/DE19924702A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44552Conflict 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

ZUSAMMENGEHÖRENDE ANMELDUNGEN
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.
HINTERGRUND DER ERFINDUNG GEBIET DER ERFINDUNG
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.
BESCHREIBUNG DES STANDES DER TECHNIK
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.
ZUSAMMENFASSUNG DER ERFINDUNG
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.
KURZBESCHREIBUNG DER ZEICHNUNGEN
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.
AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
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:
TABELLE A
Matrix von zulässigen Kombinationen zur Verwendung eines gegebenen Registers
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.
TABELLE B
Matrix von Verwendungskombinationen für ein gegebenes Register
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:
TABELLE C
Matrix von zulässigen Kombinationen der Initialisierung eines gegebenen Registers
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:
TABELLE D
Zusätzlicher Symboltabellentyp
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.
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:
TABELLE E
Kennzeichen einer dynamischen Feldgruppe für eine Symboltabelle
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.
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.
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.
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.
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.
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.
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.
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.
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.
DE19924702A 1998-05-29 1999-05-28 Systeme mit einheitlicher Datenstruktur, Verfahren und Computerprogrammprodukte zur Feststellung von globalen Konflikten Withdrawn DE19924702A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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