<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Bin%C3%A4rschnittstelle</id>
	<title>Binärschnittstelle - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://demowiki.knowlus.com/index.php?action=history&amp;feed=atom&amp;title=Bin%C3%A4rschnittstelle"/>
	<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Bin%C3%A4rschnittstelle&amp;action=history"/>
	<updated>2026-04-17T08:36:05Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Demo Wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://demowiki.knowlus.com/index.php?title=Bin%C3%A4rschnittstelle&amp;diff=12656&amp;oldid=prev</id>
		<title>imported&gt;EinWasserTrinker: /* growthexperiments-addlink-summary-summary:2|0|0 */</title>
		<link rel="alternate" type="text/html" href="https://demowiki.knowlus.com/index.php?title=Bin%C3%A4rschnittstelle&amp;diff=12656&amp;oldid=prev"/>
		<updated>2025-02-02T13:23:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;growthexperiments-addlink-summary-summary:2|0|0&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Belege fehlen|}}&lt;br /&gt;
[[Datei:Linux kernel interfaces.svg|mini|&amp;#039;&amp;#039;&amp;#039;Binärschnittstellen&amp;#039;&amp;#039;&amp;#039; (engl. {{lang|en|&amp;#039;&amp;#039;ABI&amp;#039;&amp;#039;}}) und [[Programmierschnittstelle]]n (engl. {{lang|en|&amp;#039;&amp;#039;API&amp;#039;&amp;#039;}}) sollten nicht verwechselt werden.]]&lt;br /&gt;
&lt;br /&gt;
Eine &amp;#039;&amp;#039;&amp;#039;Binärschnittstelle&amp;#039;&amp;#039;&amp;#039; ({{enS|&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;application binary interface&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;ABI&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;}}) definiert eine Schnittstelle zwischen zwei [[Computerprogramm]]en auf Maschinenebene. Ein Programm ist dabei meist das [[Betriebssystem]] oder eine [[Programmbibliothek]].&lt;br /&gt;
&lt;br /&gt;
== Funktionsweise ==&lt;br /&gt;
Die Binärschnittstelle definiert, wie auf Ebene der [[Maschinensprache]] der Programmcode auszusehen hat, der eine solche Schnittstelle verwendet. Beispiele dafür sind die Reservierung von bestimmten [[Register (Computer)|Prozessorregistern]] für bestimmte Zwecke, die Richtung des [[Stapelspeicher|Stacks]] oder das Format von [[Gleitkommazahl]]en.&lt;br /&gt;
&lt;br /&gt;
Eine Binärschnittstelle unterscheidet sich von einer [[Programmierschnittstelle]] (englisch &amp;#039;&amp;#039;application programming interface&amp;#039;&amp;#039;, API) darin, dass die Programmierschnittstelle eine Schnittstelle auf [[Quelltext]]ebene definiert. Dadurch lässt sich der Quelltext auf verschiedenen Maschinen kompilieren, die die Programmierschnittstelle unterstützen. Die Binärschnittstelle dagegen erlaubt den Betrieb auf allen Systemen, die eine binärkompatible Schnittstelle zur Verfügung stellen, ohne dass ein Neukompilieren erforderlich wäre.&lt;br /&gt;
&lt;br /&gt;
Die Binärschnittstelle stellt neben der Festlegung auf eine Architektur auch einen definierten Übergang vom Programm ins [[Betriebssystem]] dar. Sie regelt Dinge wie [[Aufrufkonvention]]en, [[Sprungtabelle|Systemaufruftabellen]], die Bedeutung von [[Signal (Unix)|Signalnummern]] und so weiter. Es sollte möglich sein, dasselbe Programm im Binärformat auf allen Systemen laufen zu lassen, die dessen ABI unterstützen.&lt;br /&gt;
&lt;br /&gt;
Eine ABI gilt manchmal nur für eine [[Programmiersprache]] bzw. einen Compilertyp, da die Regeln, wie beispielsweise aus einer [[Funktion (Programmierung)|Funktionsdefinition]] ein [[Bezeichner|symbolischer Name]] gebildet werden soll, sprachabhängig sind.&lt;br /&gt;
&lt;br /&gt;
Ändert sich eine ABI, müssen alle [[Computerprogramm|Programme]], für die sie gilt, neu kompiliert werden – daher passiert dies sehr selten. Ein jüngeres Gegenbeispiel ist jedoch die [[C++]]-ABI für den [[GNU Compiler Collection|GNU-C++-Compiler]], die sich zuerst von [[Version (Software)|Version]] 2.95 zu Version 3.0 änderte; auf Grund von Fehlern in dieser neuen ABI kam es bald darauf in der Version 3.1 zu einer weiteren Umstellung, die wiederum bald darauf durch die ABI der Version 3.2 abgelöst wurde, um zu anderen Compilern wie dem von [[Intel]] kompatibel zu sein. Da es kaum möglich ist, das System sanft an eine neue ABI anzupassen, lösten diese schnellen Wechsel viel Unmut aus.&lt;br /&gt;
Der letzte ABI-Wechsel erfolgte mit Version 3.4 (freigegeben am 18. April 2004), welche auch in der aktuellen 4.x-Reihe des GCC Verwendung findet.&lt;br /&gt;
&lt;br /&gt;
GCC 9 bedingte 2019 einen ABI-Wechsel für Code für [[ARM64]]-Prozessoren, um einen Fehler in der [[Implementierung]] von Prozeduraufrufen mit einem [[Bitfeld]] zu beheben.&amp;lt;ref&amp;gt;https://gcc.gnu.org/gcc-9/changes.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Binärschnittstelle für [[Eingebettetes System|eingebettete Systeme]] wird auch als &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;EABI&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;embedded-application binary interface&amp;#039;&amp;#039;&amp;#039;)&amp;#039;&amp;#039; bezeichnet.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Component Object Model ===&lt;br /&gt;
{{Hauptartikel|Component Object Model}}1993 veröffentlichte [[Microsoft]] das [[Component Object Model]] (COM) für wiederverwendbare Objekte, die von anderen Anwendungen benutzt werden konnten. COM bietet eine sprachenunabhängige Kommunikation zwischen verschiedenen Software-Komponenten. Das COM-Modell schafft unter dem [[Betriebssystem]] [[Windows]] die Voraussetzungen verschiedene Softwarekomponenten in einem System anzusprechen und mit anderen Komponenten zu verknüpfen. Neben dem [[Object Linking and Embedding]] (OLE), sind [[ActiveX]] und [[DirectX]] Technologien, die auf dem COM-Modell basieren.&amp;lt;ref&amp;gt;COM-Komponenten-Handbuch: [https://www.pearson.ch/download/media/9783827319364_SP.htm COM-Komponenten für den Zugriff auf Windows und BackOffice-Anwendungen] pearson.ch, abgerufen am 2. Februar 2016.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einige Technologien bauen auf COM auf, wie etwa [[Object Linking and Embedding]] (OLE), das eine Automatisierung von Anwendungen ermöglichte. Die Versionen von [[Visual Basic Classic|Visual Basic]], die nach 1993 veröffentlicht wurden, waren im Hinblick auf COM und OLE konzipiert worden. Dieser Ansatz war so erfolgreich, dass ein Dialekt der Sprache, [[Visual Basic for Applications]] (VBA), zur Programmiersprache von [[Microsoft Office|Microsoft-Office]]-Makros gewählt wurde.&amp;lt;ref&amp;gt;Technologien der Windows-Entwicklung: [https://application.wiley-vch.de/books/sample/3527760377_c01.pdf Geschichte der Windows-Anwendungsentwicklung] wiley-vch.de, abgerufen am 19. Februar 2016.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common Object Request Broker Architecture ===&lt;br /&gt;
{{Hauptartikel|Common Object Request Broker Architecture}}Die [[Common Object Request Broker Architecture]] (CORBA) ist eine Spezifikation für objektorientierte, anwendungsneutrale Programme, die zwischen Anwendungsprogrammen vermitteln und die [[Plattformübergreifend|plattformübergreifende]] [[Netzwerkprotokoll|Protokolle]] und [[Dienst (Informatik)|Dienste]] definiert. Den Kern dieser Spezifikation bildet ein Vermittler, der [[Object Request Broker]] (ORB). In Kombination mit einer [[Interface Definition Language]] (IDL) und einem Binärprotokoll unterstützt CORBA den Binärstandard.&lt;br /&gt;
&lt;br /&gt;
=== Object Linking and Embedding ===&lt;br /&gt;
{{Hauptartikel|Object Linking and Embedding}}[[Object Linking and Embedding]] (OLE) ist ein von [[Microsoft]] entwickeltes Objektsystem und [[Netzwerkprotokoll|Protokoll]], das die Zusammenarbeit unterschiedlicher (OLE-fähiger) Applikationen und damit die Erstellung heterogener Verbunddokumente ermöglichen soll. Während CORBA [[Interoperabilität]] im Zusammenhang mit einer IDL garantiert, definiert OLE selbst einen Binärstandard für den Zugriff auf Serverschnittstellen.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Binärkompatibilität]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Holger Schwichtenberg: &amp;#039;&amp;#039; COM-Komponenten-Handbuch: Systemprogrammierung und Scripting mit COM-Komponenten.&amp;#039;&amp;#039; Pearson Deutschland, 2001, ISBN 3-8273-1936-6.&lt;br /&gt;
* Peter Zöller-Greer: &amp;#039;&amp;#039; Software Architekturen, Grundlagen und Anwendungen, Einführung in Architekturbeschreibungssprachen (ADLs).&amp;#039;&amp;#039; BoD – Books on Demand, 2010, ISBN 978-3-9811639-3-3.&lt;br /&gt;
* Frank Buschmann: &amp;#039;&amp;#039; Pattern-orientierte Software-Architektur: ein Pattern-System, Professionelle Softwareentwicklung.&amp;#039;&amp;#039; Pearson Deutschland, 1998, ISBN 3-8273-1282-5.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Schnittstelle (Software)]]&lt;br /&gt;
[[Kategorie:Softwarearchitektur]]&lt;/div&gt;</summary>
		<author><name>imported&gt;EinWasserTrinker</name></author>
	</entry>
</feed>