Gast
#2681536
Was ist eine Compiler Abstraction ?
|
Anzeige
|
Compiler Abstraction
Gast
#2681536
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.
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
#2682157
Sind es also Mikrocontroller eigene Macros, die es in C nicht gibt?
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 schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|