DE19924437A1 - Verfahren, Computerprogrammprodukte und Vorrichtung zur Initialisierung von globalen Registern - Google Patents

Verfahren, Computerprogrammprodukte und Vorrichtung zur Initialisierung von globalen Registern

Info

Publication number
DE19924437A1
DE19924437A1 DE19924437A DE19924437A DE19924437A1 DE 19924437 A1 DE19924437 A1 DE 19924437A1 DE 19924437 A DE19924437 A DE 19924437A DE 19924437 A DE19924437 A DE 19924437A DE 19924437 A1 DE19924437 A1 DE 19924437A1
Authority
DE
Germany
Prior art keywords
global
file
object file
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
DE19924437A
Other languages
English (en)
Inventor
Stephen Alan Chessin
Rodrick Ison Evans
Michael S Walker
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 DE19924437A1 publication Critical patent/DE19924437A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

Ein System, ein Verfahren und ein Computerprogrammprodukt zum Kompilieren einer Quellendatei und zum Erzeugen einer Datenstruktur, die ein globales Symbol einem globalen Register, auf das in der Quellendatei Bezug genommen wird, zuordnet. Die Datenstruktur ermöglicht, daß ein Binderprogramm die globalen Register initialisiert. Der Kompilierer erzeugt auch eine Objektdatei aus der Quellendatei. Die Objektdatei enthält die Informationen für globale Register. Ein Binderprogramm verknüpft die Objektdatei potentiell mit mindestens einer weiteren Objektdatei oder gemeinsam genutzten Bibliothek, um dadurch eine ausführbare Datei oder gemeinsam genutzte Bibliothek zu erzeugen. Das Binderprogramm verwendet die Informationen für globale Symbole, die in der Objektdatei enthalten sind, um die globalen Register zu initialisieren und Verschiebungsoperationen durchzuführen.

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. 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 Verfahren, Computerprogrammprodukte und Systeme zur Initialisierung von globalen Registern in Verbindung mit der Kompilierung und Verknüpfung von Objektdateien, die zum Entwickeln einer ausführbaren oder Bibliothekssoftwaredatei oder einer Ausführungsabbildung zur Verwendung in einem Computerprogrammiersystem oder -netzwerk verwendet werden.
BESCHREIBUNG DES STANDES DER TECHNIK
Die Kennzeichnung von einem oder mehreren der Computersystemregister als global hinsichtlich des Gültigkeitsbereichs erhöht die Betriebsflexibilität auf dem Gebiet der Computersysteme und -software. Lokale Register besitzen im Gegensatz zu globalen Registern einen auf das spezielle Modul oder Unterprogramm begrenzten Gültigkeitsbereich. Im Gegensatz dazu sind globale Register ausgewählte Register, die von einem Computerprogramm allgemein und nicht nur von speziellen Modulen oder Unterprogrammen des Computerprogramms verwendet werden. Globale Variablen oder Symbole werden in Verbindung mit solchen globalen Registern zur allgemeinen Verwendung während der Ausführung des Computerprogramms verwendet.
Globale Variablen und Symbole, die in Computerprogrammen verwendet werden, werden typischerweise am Beginn der Programmausführung initialisiert, um Anfangswerte zur Verwendung in Routinen und Algorithmen bereitzustellen, die während der Operation implementiert werden. Obwohl solche Variablen und Symbole üblicherweise im Computerspeicher initialisiert werden, besteht jedoch ein Mangel an der Bereitstellung einer Initialisierung für globale Register. Wenn verschiedene Teile eines speziellen Programms ein bestimmtes globales Register verwenden, das nicht korrekt initialisiert wurde, kann es zu einer falschen Bezugnahme und einem fehlerhaften Gültigkeitsbereich von Variablen kommen. Ein solcher Mangel an Initialisierung eines globalen Registers verursacht gewöhnlich falsche Programmergebnisse, da sich in dem globalen Register zu der Zeit, in der auf es zugegriffen wird, ein fehlerhafter Variablenwert oder überhaupt kein Wert befindet.
Es ist erwünscht, die Initialisierung von globalen Werten, die bei einer Softwareoperation vorkommen, zu ermöglichen. Obwohl bekannte Mechanismen zur Initialisierung von Variablen im Speicher auf gegebene Werte, bevor die Programmausführung beginnt, existieren, gibt es keine solchen bekannten Mechanismen zur Initialisierung eines Registers, das eine globale Variable enthalten soll, die auf einen ausgewählten Wert gesetzt werden muß, bevor die Ausführung beginnt.
ZUSAMMENFASSUNG DER ERFINDUNG
Gemäß der vorliegenden Erfindung werden individuell kompilierte Softwareeinheiten zu einer kombinierten ausführbaren Datei verknüpft und spezielle Variablen werden in speziellen globalen Registern auf vorbestimmte Anfangswerte gesetzt. Statische und dynamische Binderprogramme führen jeweils Verknüpfungsoperationen aus, um ausführbare Dateien und eine Ausführungsabbildung zu erzeugen. Ferner werden globale Register auf gewünschte Werte initialisiert, bevor die Programmausführung beginnt. Gemäß einer Ausführungsform der vorliegenden Erfindung gibt ein vorbestimmter Teil einer Symboltabelleneintragung an, ob ein Initialisierer für ein spezielles globales Register vorhanden ist oder nicht. Gemäß speziellen Ausführungsformen der vorliegenden Erfindung gibt ein Verschiebungstyp, R_SPARC_REGISTER, oder eine einheitliche Datenstruktur einen Anfangswert für ein globales Register an.
Ferner erzeugt gemäß der vorliegenden Erfindung ein Kompilierer Symboltabelleneintragungen, um anzugeben, ob eine enthaltende Objektdatei anwendungsreservierte globale Register verwendet, und wenn ja, welche die Anfangswerte der speziellen globalen Register sind. Das statische Binderprogramm prüft die erzeugten Symboltabellen­ eintragungen für alle Objektdateien, die zu einer speziellen Zielobjektdatei kombiniert werden, um sicherzustellen, daß die Symboltabellen Anfangswerte für mindestens eine wesentliche Anzahl der globalen Register enthalten, auf die durch die verschiedenen Quellenelemente Bezug genommen wird, und daß diese Anfangswerte kompatibel verwendet werden. Die erzeugte resultierende Objektdatei umfaßt diese Symboltabelleneintragungen, um die Verwendung der globalen Register von der resultierenden Objektdatei anzuzeigen. Das statische Binderprogramm warnt, wenn irgendeine Objektdatei, auf die während der Verknüpfung Bezug genommen wurde, globale Register verwendet, die inkompatibel initialisiert oder initialisierbar sind. Das statische Binderprogramm erzeugt eine Warnung, wenn eine gemeinsam genutzte Objektdatei erstellt wird, die ein globales Register inkompatibel initialisiert.
Gemäß der vorliegenden Erfindung umfaßt ein System und ein Verfahren zur Initialisierung einer ausführbaren Softwaredatei einen Kompilierer zum Erzeugen einer Symboltabelle, die speziellen globalen Registern bestimmte Anfangswerte zuordnet. Die Symboltabelleninformationen reichen aus, um zu ermöglichen, daß ein Binderprogramm eine Initialisierung durchführt. Die Symboltabelleninformationen sind in der vom Kompilierer erzeugten Objektdatei enthalten. Der Kompilierer erzeugt insbesondere Objektdateien derart, daß die Identifikation von Verwendungskonflikten und die Durchführung von Verschiebungsoperationen hinsichtlich eines Fehlers der Initialisierung 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 vorinitialisierte globale Werte verwendet.
KURZBESCHREIBUNG DER ZEICHNUNGEN
Fig. 1 ist ein Kompilierungs-Datenflußdiagramm gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung, der die Erstellung von Objektdateien durch einen Kompilierer zeigt, welche zu einer ausführbaren Datei oder zu einer Ausführungsabbildung jeweils durch ein statisches Binderprogramm und ein Ablauf-Binderprogramm verbunden werden, das sich durch einen Initialisierungsprozessor für globale Register auszeichnet, der Anfangswerte für globale Register bereitstellt, bevor die Ausführungsabbildung abläuft;
Fig. 2 ist ein Blockdiagramm eines Computersystems gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung;
Fig. 3A ist ein Ablaufplan eines Binderprogrammprozesses zur Verwendung in Verbindung mit der vorliegenden Erfindung;
Fig. 3B ist ein Ablaufplan eines Binderprogrammprozesses gemäß einer Ausführungsform der vorliegenden Erfindung, der die Initialisierung von globalen Registern umfaßt;
Fig. 3C ist ein Ablaufplan der Initialisierung von globalen Registern gemäß der vorliegenden Erfindung;
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 Initialisierungsinformationen für die globalen Register erzeugt werden, welche vom Ablauf-Binderprogramm verwendet werden;
Fig. 4B ist ein Blockdiagramm einer Datenstruktur gemäß einer Ausführungsform der vorliegenden Erfindung, einschließlich einer Verwendungsinformation und einer Initialisierungsinformation, um die Bereitstellung von Initialisierungsinformationen für den Initialisierungsprozessor für globale Register gemäß der vorliegenden Erfindung zu ermöglichen;
Fig. 4C ist ein Blockdiagramm des Protokolls für die Verwendungsinformation in einer Datenstruktur gemäß der vorliegenden Erfindung;
Fig. 4D ist ein Blockdiagramm des Protokolls für die Initialisierungsinformation in einer Datenstruktur 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;
Fig. 7 ist ein Beispiel einer Symboltabelle, die von einem Kompilierer gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung erzeugt wird, wobei die Symboltabelleninformationen Angaben des Symboltyps, des Symbolwerts, des Symbolnamens, der Größe und des Bindungsstatus enthalten, welcher festlegt, ob das Symbol eine lokale oder eine globale Variable darstellt; und
Fig. 8 ist eine Verschiebungstabelle gemäß einer Ausführungsform der vorliegenden Erfindung.
AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
Fig. 1 ist ein Kompilierungs-Datenflußdiagramm gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung, der die Erstellung von Objektdateien durch einen Kompilierer zeigt, welche eine Datenstruktur (DS) enthalten, um die Feststellung von Konflikten zwischen Zuordnungen von globalen Registern durch das statische und das Ablauf- Binderprogramm zu ermöglichen und die globalen Register zu initialisieren. Insbesondere stellt Fig. 1 einen Kompilierer 104, ein statisches Binderprogramm 114 und ein Ablauf-Binderprogramm 118 gemäß einer Implementierung der vorliegenden Erfindung dar. Das Ablauf-Binderprogramm 118 umfaßt einen Prozessor 119 zur Initialisierung von globalen Registern gemäß der vorliegenden Erfindung. Der Kompilierer 104 erzeugt aus einer Quellendatei 102 eine Objektdatei 106 mit einer Datenstruktur zur Feststellung von Konflikten von globalen Registern 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 globale Registersymbole zu initialisieren. Die Datenstruktur besitzt einen Namen, .rela; einen Typ, SHT_RELA; und keine Attribute. Folglich ist die folgende Tabelle gültig:
TABELLE A
Matrix von zulässigen Kombinationen zur Verwendung eines gegebenen Registers
.rela sh_link enthält den Abschnittskopfindex der zugehörigen Symboltabelle; und sh_info ist 0, was anzeigt, daß dieser Abschnitt nur Registerverschiebungen enthält.
Die Objektdatei 106 sowie Null oder mehrere andere Objektdateien 108 und/oder Null oder mehrere gemeinsam genutzte Bibliotheken 110 werden gemäß einer Ausführungsform 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 oder eine gemeinsam genutzte Bibliothek. 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. ein Code, Daten usw. aus den gemeinsam genutzten Bibliotheken 110 sind nicht tatsächlich in die ausführbare Datei 204 eingebettet). 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 die in der ausführbaren Datei 116 enthaltenen Verweise auf die gemeinsam genutzten Bibliotheken 110 auf, initialisiert die globalen Register mit dem Prozessor 119 zur Initialisierung von globalen Registern und erzeugt eine Ausführungsabbildung 120. Die Ausführungsabbildung 120 wird im Hauptspeicher 208 gespeichert und durch eine Zentraleinheit 204 (Fig. 2) ausgeführt. Im allgemeinen kann die Operation des statischen Binderprogramms 114 und des Ablauf-Binderprogramms 118 in vier Phasen unterteilt werden, wie nachstehend ausführlich erörtert.
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 (z. B. ohne Einschränkung ein Direkt­ zugriffsspeicher (RAM)) 208, der ebenfalls mit dem Bus 206 verbunden ist. Das Computersystem 202 umfaßt des weiteren einen Kompilierer 104 und ein erstes und ein zweites Binderprogramm, einschließlich eines statischen Binderprogramms 114 und eines Ablauf-Binderprogramms 118, die gemäß einer Ausführungsform 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äß 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 Computerlogik 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 369 der Beendigung oder des Endes der Ausführung durch.
Fig. 3C ist ein Ablaufplan der Initialisierung von globalen Registern gemäß der vorliegenden Erfindung. Insbesondere zeigt Fig. 3C einen Initialisierungsprozeß 382 gemäß einer Ausführungsform der vorliegenden Erfindung. Die Initialisierung umfaßt das Lesen 386 von Initialisierungsinformationen aus einer Datenstruktur gemäß der vorliegenden Erfindung, die Initialisierungs­ informationen für vorbestimmte globale Register enthält. Gemäß einer Ausführungsform der vorliegenden Erfindung ist die Datenstruktur eine Symboltabelle. Gemäß einer weiteren Ausführungsform der vorliegenden Erfindung ist die Datenstruktur eine einheitliche Datenstruktur, wie in der zugehörigen Anmeldung mit dem Titel "Unitary Data Structure Systems, Methods and Computer Products, for Global Conflict Determination" gezeigt, die in ihrer Gesamtheit durch den Hinweis ausdrücklich hierin integriert wird. Die Initialisierung umfaßt außerdem die Verarbeitung 388 der Initialisierungsinformation, die gelesen wurden, unter Verwendung des Prozessors zur Initialisierung von globalen Registern (GRIE) gemäß der vorliegenden Erfindung. Ferner umfaßt die Initialisierung das Schreiben 390 der verarbeiteten Initialisierungsinformationen in vorbestimmte globale Register. Schließlich ist die Initialisierung vollendet 394.
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 Datenstruktur für globale Register (GRDS) 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 GRDS 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 für globale Symbole und globale Register und bettet solche Informationen in eine Datenstruktur für globale Register (GRDS) 406 ein, die wiederum in der Objektdatei 106 enthalten ist. Solche Informationen 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 406 für globale Symbole und globale Register, die vom Kompilierer 104 erzeugt werden, ermöglichen, daß das 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 Datenstruktur für globale Register (GRDS) 406 wird nachstehend weiter beschrieben.
Fig. 4B ist ein Blockdiagramm einer GRDS 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 GRDS 406 kommuniziert mit dem Prozessor zur Initialisierung von globalen Registern (GRIE) 119, um die Initialisierung von globalen Registern mit den Initialisierungsinformationen 441 gemäß der vorliegenden Erfindung zu ermöglichen.
Fig. 4C ist ein Blockdiagramm des Protokolls für die UI 440 in der GRDS 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 GRDS 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 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 zeigt Fig. 5 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 enthaltende Objektdatei die anwendungsreservierten globalen Register verwendet. Der Programmierer zeigt dem Kompilierer beispielsweise durch Kennzeichen gemäß einer Ausführungsform der vorliegenden Erfindung oder dem Assemblierer durch Kennzechen 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 und das Ablauf-Binderprogramm 118 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 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. 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 zulässigen Kombinationen zur Verwendung eines gegebenen Registers
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 legt 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" genannte. 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 Beispiel einer Symboltabelle, die von einem Kompilierer gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung erzeugt wird. Fig. 7 zeigt insbesondere erste und zweite Symboltabelleneintragungen 714 und 718 in einer beispielhaften Symboltabelle 408. Jede Eintragung in der Symboltabelle 408 enthält eine Information, die den Symboltyp identifiziert, und eine Information, die den Wert des Symbols für diese Klasse angibt. Eintragungen für spezielle Symbole können außerdem weitere Felder enthalten, einschließlich beispielsweise eines Symbolnamens, einer Symbolgröße, einer Symbolbindung und eines Symbolabschnittsindex. 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 in der Symboltabelle 408 gemäß der vorliegenden Erfindung 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. Man betrachte das Beispiel von Fig. 7. Vor der Verarbeitung der Verschiebungseintragungen in der Verschiebungstabelle 412 wertet das anwendbare Binderprogramm die Symboleintragungen 714, 718 in der Symboltabelle 408 aus und liest den zu jeder Symboleintragung gehörenden Wert. Das anwendbare Binderprogramm fügt dann den gelesenen Wert in das Wertefeld der Symboleintragung 714 ein. Gemäß einer Ausführungsform der vorliegenden Erfindung fügt das anwendbare Binderprogramm diesen Wert (8 Bytes) in das Wertefeld der Symboleintragung 718 ein. Während der Verarbeitung einer speziellen Verschiebungseintragung ersetzt das anwendbare Binderprogramm gemäß der vorliegenden Erfindung einen Platzhalter in der Anweisung an einer speziellen Adresse durch den Wert in der Symboleintragung 714. Dies kann ein Fallzeiger in einer Verschiebungseintragung sein, der auf eine Symboleintragung 714 verweist. Ebenso ersetzt das anwendbare Binderprogramm während der Verarbeitung einer speziellen Verschiebungseintragung für die Verschiebungstabelle 412 den Platzhalter, wie z. B. eine Null (d. h. beispielsweise "0"), in der Anweisung an einer speziellen Adresse durch den in der Symboleintragung 714 vorgesehenen Wert. Ein Registersymbol in einer Symboltabelle gemäß einer Ausführungsform der vorliegenden Erfindung wird durch einen speziellen zusätzlichen Symboltyp und Wert angezeigt, wie nachstehend dargelegt:
TABELLE D
Zusätzlicher Symboltabellentyp
Eine Symboltabelleneintragung für ein Registersymbol gemäß einer Ausführungsform der vorliegenden Erfindung umfaßt insbesondere die folgenden Elemente:
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: ELF64_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 zeigt an, 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 Symboltabellen­ eintragung an. Das folgende Kennzeichen einer dynamischen Feldgruppe wird darüber hinaus gemäß einer Ausführungsform der vorliegenden Erfindung zur Symboltabelle hinzugefügt:
TABELLE E
Kennzeichen einer dynamischen Feldgruppe für eine Symboltabelle
Der Kompilierer 104 gemäß der vorliegenden Erfindung erzeugt folglich einen Code, der zur Verknüpfungszeit verschoben wird. Wenn auf eine Variable in einer Quellendatei Bezug genommen wird, erzeugt der Kompilierer 104 insbesondere sowohl eine Symboltabelle 408 als auch eine Verschiebungstabelle 412. Gemäß einer Ausführungsform der vorliegenden Erfindung wird die Erzeugung von Symbol- und Verschiebungstabellen mit einem spezialisierten Verschiebungstyp für globale Register durchgeführt, der zur Identifikation von Konflikten von globalen Registern und zur Initialisierung der globalen Register vor der Ausführung der Ausführungsabbildung, die erzeugt wird, verwendet wird.
Fig. 8 ist ein Beispiel einer Verschiebungstabelle gemäß einer Ausführungsform der vorliegenden Erfindung. Die Verschiebungstabelle 412 enthält eine Liste der Verschiebungen, die vom anwendbaren Binderprogramm während der Verknüpfungszeit durchgeführt werden müssen. Jede Eintragung in der Verschiebungstabelle 412 umfaßt einen Verschiebungstyp, eine Adresse von entweder einer Anweisung oder einem Datenelement, das verschoben werden muß, und in jedem außer einem Fall, einen Zeiger zu einer Eintragung in der Symboltabelle 408. Der folgende Verschiebungstyp wird gemäß der vorliegenden Erfindung zur Verschiebungstabelle hinzugefügt:
TABELLE F
Zusätzlicher Verschiebungstyp
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 (14)

1. Verfahren zur Initialisierung eines globalen Registers, umfassend:
Erzeugen, durch einen Kompilierer, von Informationen für globale Register, die mindestens eine einzelne globale Variable betreffen, auf die in einer Quellendatei Bezug genommen wird;
Erzeugen, durch den Kompilierer, einer Objektdatei aus der Quellendatei, wobei die Objektdatei die Informationen für globale Variablen umfaßt; und
Verknüpfen, durch ein Binderprogramm, der Objektdatei mit mindestens einer von einer weiteren Objektdatei und einer gemein genutzten Bibliothek, um dadurch eine ausführbare Datei zu erzeugen, unter Verwendung der Informationen für globalen Variablen, die in der Objektdatei enthalten sind, um mindestens ein einzelnes globales Register zu initialisieren und Variablenkonflikte bezüglich des mindestens einen einzelnen globalen Registers zu identifizieren.
2. Verfahren nach Anspruch 1, einschließlich des Erzeugens einer Datenstruktur innerhalb einer ausgewählten Objektdatei, die Initialisierungswerte für globale Register enthält.
3. Verfahren nach Anspruch 2, umfassend:
Auswählen eines solchen globalen Registers;
Festlegen eines Anfangswerts eines ausgewählten globalen Registers; und
Speichern des Werts in einem Feld einer solchen Datenstruktur, die mit dem globalen Register verknüpft ist.
4. Verfahren nach Anspruch 3, welches ferner das Erstellen einer Datenstruktur innerhalb einer ausgewählten Objektdatei umfaßt, um die Initialisierung von globalen Registern zu ermöglichen.
5. Verfahren nach Anspruch 1, einschließlich des Festlegens von Anfangswerten für globale Register gemäß Benutzeranforderungen.
6. System zur Initialisierung von globalen Registern, umfassend:
einen Kompilierer mit einem Informationsgenerator, der konfiguriert ist, um Anfangswertinformationen zu erzeugen, die globale Register betreffen, auf die in der Quellendatei Bezug genommen wird, wobei die Informationen die Initialisierung von globalen Registern während der Verknüpfungszeit ermöglichen;
einen Objektdateigenerator, der konfiguriert ist, um aus der Quellendatei eine Objektdatei zu erzeugen, wobei die Objektdatei eine Datenstruktur umfaßt, die die Initialisierung von globalen Registern ermöglicht; und
ein Binderprogramm zum Verknüpfen der Objektdatei mit mindestens einer weiteren Objektdatei, um eine ausführbare Datei zu erzeugen, wobei das Binderprogramm ein Mittel zur Verwendung der in der Objektdatei enthaltenen Symbolinformationen umfaßt.
7. System nach Anspruch 6, welches ferner ein Mittel zum Erzeugen einer Datenstruktur mit einer Symboleintragung für ein anwendbares Symbol, das einer Bezugnahme in einer Quellendatei zugeordnet ist, und einem Wertefeld mit einem Wert des Symboltyps umfaßt.
8. System nach Anspruch 7, wobei das System umfaßt:
ein Mittel zum Festlegen eines Werts eines Symboltyps; und
ein Mittel zum Speichern des Werts in dem Wertefeld der ausgewählten Symboleintragung.
9. System nach Anspruch 8, welches ein Mittel zum Erzeugen einer Datenstruktur umfaßt, die die Initialisierung von globalen Registern ermöglicht.
10. System nach Anspruch 9, wobei das System ein Mittel zur Initialisierung von globalen Registern umfaßt.
11. Computerprogrammprodukt mit einem maschinenlesbaren Medium mit einer darauf aufgezeichneten Computerprogrammlogik, um zu ermöglichen, daß ein Computersystem eine Quellendatei kompiliert, wobei das Computerprogrammprodukt umfaßt:
einen Mechanismus, um zu ermöglichen, daß das Computersystem während der Kompilierungszeit Informationen erzeugt, die globale Register betreffen, auf die in der Quellendatei Bezug genommen wird, wobei die Informationen die Initialisierung von globalen Registern während der Verknüpfungszeit ermöglichen;
einen Objektdatei-Erzeugungsmechanismus, um zu ermöglichen, daß das Computersystem während der Kompilierungszeit aus der Quellendatei eine Objektdatei erzeugt; und
einen Verknüpfungsmechanismus, um zu ermöglichen, daß das Computersystem während der Verknüpfungszeit die Objektdatei mit mindestens einer weiteren Objektdatei verknüpft, um dadurch eine ausführbare Datei zu erzeugen.
12. Computersystem, umfassend:
einen Prozessor; und
eine Steuereinheit, um zu ermöglichen, daß der Prozessor eine Quellendatei kompiliert und verknüpft, wobei die Steuereinheit umfaßt:
einen Symbolinformationsmechanismus, um zu ermöglichen, daß der Prozessor während der Kompilierungszeit Informationen erzeugt, die globale Register betreffen, auf die in der Quellendatei Bezug genommen wird, wobei die Symbolinformationen die Initialisierung von globalen Registern während der Verknüpfungszeit ermöglichen;
einen Objektdateigenerator, um zu ermöglichen, daß der Prozessor während der Kompilierungszeit aus der Quellendatei eine Objektdatei erzeugt, wobei die Objektdatei eine Datenstruktur, um die Initialisierung von globalen Registern zur Verknüpfungszeit zu ermöglichen, enthält; und
ein Binderprogramm, um zu ermöglichen, daß der Prozessor während der Verknüpfungszeit die Objektdatei mit mindestens einer weiteren Objektdatei verknüpft.
13. Steuereinheit, um zu ermöglichen, daß ein Prozessor eine Quellendatei kompiliert, 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 Quellendatei Bezug genommen wird, wobei die Informationen ausreichen, um die Initialisierung von globalen Registern während der Verknüpfungszeit zu ermöglichen;
ein Objektdatei-Erzeugungsmittel, um zu ermöglichen, daß der Prozessor während der Kompilierungszeit aus der Quellendatei eine Objektdatei erzeugt, wobei die Objektdatei eine Datenstruktur, um die Initialisierung von globalen Registern zur Verknüpfungszeit zu ermöglichen, enthält; und
ein Verknüpfungsmittel, um zu ermöglichen, daß der Prozessor während der Verknüpfungszeit die Objektdatei mit mindestens einer weiteren Objektdatei 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 Initialisierung der globalen Register umfaßt.
14. System zur Initialisierung von globalen Registern, umfassend:
einen Kompilierer mit einem Informationserzeugungsmittel zum Erzeugen von Anfangswertinformationen, die globale Register betreffen, auf die in der Quellendatei Bezug genommen wird, wobei die Informationen die Initialisierung von globalen Registern während der Verknüpfungszeit gestatten;
ein Objektdatei-Erzeugungsmittel zum Erzeugen einer Objektdatei aus der Quellendatei, wobei die Objektdatei eine Datenstruktur enthält, die die Initialisierung von globalen Registern ermöglicht; und
ein Binderprogramm zum Verknüpfen der Objektdatei mit mindestens einer weiteren Objektdatei, um eine ausführbare Datei zu erzeugen, wobei das Binderprogramm ein Mittel zur Verwendung der in der Objektdatei enthaltenen Symbolinformationen umfaßt.
DE19924437A 1998-05-29 1999-05-28 Verfahren, Computerprogrammprodukte und Vorrichtung zur Initialisierung von globalen Registern Withdrawn DE19924437A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/087,344 US6026242A (en) 1998-05-29 1998-05-29 Methods, computer program products, and apparatus for initializing global registers

Publications (1)

Publication Number Publication Date
DE19924437A1 true DE19924437A1 (de) 2000-02-03

Family

ID=22204633

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19924437A Withdrawn DE19924437A1 (de) 1998-05-29 1999-05-28 Verfahren, Computerprogrammprodukte und Vorrichtung zur Initialisierung von globalen Registern

Country Status (4)

Country Link
US (1) US6026242A (de)
JP (1) JP2000010791A (de)
DE (1) DE19924437A1 (de)
GB (1) GB2342200B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113741411A (zh) * 2021-11-08 2021-12-03 西安热工研究院有限公司 一种分散控制系统全局变量点产物文件生成方法和系统

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298479B1 (en) * 1998-05-29 2001-10-02 Sun Microsystems, Inc. Method and system for compiling and linking source files
US8769517B2 (en) * 2002-03-15 2014-07-01 International Business Machines Corporation Generating a common symbol table for symbols of independent applications
US7503040B2 (en) * 2004-09-30 2009-03-10 International Business Machines Corporation Configuring a shared library to accommodate relocatable data in a pervasive device
US8516469B2 (en) * 2005-07-25 2013-08-20 Flexera Software Llc Function binding method and system
US20110246966A1 (en) * 2010-04-06 2011-10-06 Sony Computer Entertainment America Inc. Embedding source files into program symbol files
CN102902568B (zh) 2011-07-27 2016-08-17 国际商业机器公司 一种用于处理应用程序的内容表访问溢出的方法和系统
CN110688320B (zh) * 2019-09-30 2023-05-23 潍柴动力股份有限公司 全局变量的检测方法、装置及终端设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4435753A (en) * 1980-10-31 1984-03-06 International Business Machines Corporation Register allocation system using recursive queuing during source code compilation
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
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
US5278986A (en) * 1991-12-13 1994-01-11 Thinking Machines Corporation System and method for compiling a source code supporting data parallel variables
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
US5375242A (en) * 1993-09-29 1994-12-20 Hewlett-Packard Company Compiler architecture for cross-module optimization
EP0676691A3 (de) * 1994-04-06 1996-12-11 Hewlett Packard Co Vorrichtung zur Registersicherstellung und Umspeicherung in einem digitalen Rechner.
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
US6298479B1 (en) * 1998-05-29 2001-10-02 Sun Microsystems, Inc. Method and system for compiling and linking source files

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113741411A (zh) * 2021-11-08 2021-12-03 西安热工研究院有限公司 一种分散控制系统全局变量点产物文件生成方法和系统
CN113741411B (zh) * 2021-11-08 2022-02-01 西安热工研究院有限公司 一种分散控制系统全局变量点产物文件生成方法和系统

Also Published As

Publication number Publication date
US6026242A (en) 2000-02-15
GB2342200A (en) 2000-04-05
GB2342200B (en) 2003-08-13
GB9911953D0 (en) 1999-07-21
JP2000010791A (ja) 2000-01-14

Similar Documents

Publication Publication Date Title
EP0689694B1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE69924857T2 (de) Programm-kode-umwandlung
EP0502857B1 (de) Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems
DE69832932T2 (de) Programmkonvertiergerät für konstantenrekonstruierenden VLIW Prozessor
DE69932371T2 (de) Verschiebbare Instrumentationskennzeichen für die Prüfung und die Fehlerbeseitigung eines Computerprogramms
DE69730276T2 (de) Vorrichtung und Verfahren zur Erleichterung der Vermeidung von exzeptionellen bestimmten Zuständen während des Ablaufs eines Programmes
DE60010420T2 (de) Automatisches Regressionstesten von Arbeitsplatz-Software
EP1723513B1 (de) Verfahren zur konfiguration eines computerprogramms
DE19924702A1 (de) Systeme mit einheitlicher Datenstruktur, Verfahren und Computerprogrammprodukte zur Feststellung von globalen Konflikten
DE19945992A1 (de) Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren
DE69133571T2 (de) Datenprozessor mit der Fähigkeit, zwei Befehle gleichzeitig auszuführen
EP1738257B1 (de) Verfahren zum vermeiden von dateninkonsistenz zwischen zugriffen verschiedener funktionen einer anwendung auf eine globale variable in einer datenverarbeitungsanlage
DE3842289C2 (de) Verfahren zur Entwicklung von Programmen für ein verteiltes Datenverarbeitungssystem
DE10006417A1 (de) Computersystem mit Einzelverarbeitungsumgebung für die Ausführung von mehreren Anwendungsprogrammen
DE19581754B4 (de) System und Verfahren zum bedingten Kompilieren einer Software-Kompiliereinheit
DE19924437A1 (de) Verfahren, Computerprogrammprodukte und Vorrichtung zur Initialisierung von globalen Registern
DE112018002316T5 (de) Codeabdeckungsverfolgung für ein mikrocontroller-programm
DE2458286A1 (de) Datenverarbeitungssystem zum verschieben von datenfeldern mit verschiedenen strukturen
DE4104568A1 (de) Verfahren und vorrichtung zur programmverarbeitung
DE69712965T9 (de) Verfahren, System und Rechnerprogrammprodukt zur Registerzuweisung unter Verwendung mehrerer Interferenzgraphen
EP3015995A1 (de) Verfahren zum konfigurieren einer schnittstelleneinheit eines computersystems
WO1998001805A1 (de) Verfahren zur migration von programmen mit portierbaren und nicht-portierbaren programmteilen
DE2249852A1 (de) Computersystem
DE102020119853B3 (de) Verfahren zum Steuern eines Automatisierungssystems mit Visualisierung von Programmobjekten eines Steuerprogramms des Automatisierungssystems und Automatisierungssystem
DE10325843B4 (de) Verfahren, Drucksystem, Computer und Computerprogramm zum Verwalten von Resourcen zur Verwendung in einem resourcenbasierten Dokumentendatenstrom

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal