Was ist eine Compiler Abstraction ?
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.
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 !!!
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);
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.