Compiler Abstraction

#2681595
Ohne jetzt deinen Zusammenhang (also deine Hausaufgabe) zu kennen, kann 
man das nicht sicher sagen.

Vermutlich ist das eine Art Zwischenschicht (Layer, Satz von Makros 
o.ä.) um Quelltexte vom verwendeten Compiler unabhängig zu machen.
Gast #2681600
Hallo,

es gibt einen ähnlichen Begriff HAL (Hardware Abstraction Layer) den man 
gewöhnlich nur bei Betriebssystemen findet. Dieser HAL gewährleistet 
dass man Programme (einfach gesagt) unabhängig von der im Rechner 
eingebauten Hardware schreiben kann.

Bei Embedded Systemen, die ja meist kein Betriebssystem haben, ist es 
nicht so einfach quasi hardwareunabhängige Programme, vielleicht sogar 
für verschiedenen CPUs, zu schreiben.
Hier kommen dann bestimmte Compiler/Linker zu Hilfe.
Gibt man hier z.B. die verwendete CPU an dann weiss der Compiler von 
sich aus wie er das Programm in einen lauffähigen Code übersetzten muss, 
welche Startup-Files er einbinden muss, welche Bibliothek er verwendet 
und so weiter.
Diese Compiler stellen auch Techniken (Makros, defines usw.) zur 
Verfügung um diese Fähigkeit selber weiter auszubauen etc.

Kurz gesagt, diese Compiler/Linker abstrahieren !!!
Gast #2704769
Die Compiler Abstraction abstrahiert die Implementierung von 
verschiedenen Compilern. Dabei geht es nicht (wie von Stefan ++ 
vermutet) darum, jede Software hardwareunabhängig zu machen (bei 
Hardwaretreibern meist unmöglich), sondern darum ein Softwaremodul mit 
verschiedenen (für eine bestimmte Zielplatform erhältlichen) Compilern 
compilieren zu können.

Bei AUTOSAR findest Du eine Spec für eine Compiler Abstraction, da sind 
auch Beispiele drin:
http://www.autosar.org/index.php?p=3&up=1&uup=2&uuup=7&uuuup=0&uuuuup=0

Dabei werden keine 'neuen' Makros definiert, sondern durch einen Satz 
von Makros werden bestimmte Compiler-Spezifika berücksichtigt, z.B. die 
Reichweite von Pointern/ Memory Mapping (Stichwort: Paging) oder die 
Reihenfolge von Compiler-Keywords. Am deutlichsten zeigt sich dieser 
Unterschied wohl bei den Compilern von Freescale und Cosmic für die S12* 
Platform...

Kurzes Beispiel, wie das in der Software aussieht:

- ohne Compiler Abstraction:

uint8 MeineVariable;
uint8 MeineFunktion(uint16 Parameter);

- mit Compiler Abstraction (AUTOSAR Style):

VAR(uint8, MY_VARS) MeineVariable;
FUNC(uint8, MY_CODE) MeineFunktion(uint16 Parameter);

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.