mikrocontroller.net

Forum: Compiler & IDEs GCC Built in Functions


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
wahrscheinlich kann man mir hier weiterhelfen. Ich habe den Befehlssatz 
von einen Nios II Softcore Prozessor mit Hilfe sogenannter 'Custom 
Instructions" erweitert. In der Altera Doku finde ich nun folgendes 
Beispiel zur Nutzung dieser HW Funktion in C:

#define ALT_CI_BITSWAP_N 0x00
#define ALT_CI_BITSWAP(A) __builtin_custom_ini(ALT_CI_BITSWAP_N,(A))

Zur Erklärung dieser MAkrodefinition heisst es nun im Folgendem:

'The ALT_CI_BITSWAP(A) macro is mapped to a gcc built-in function that
takes a single argument.'

Kann mir jemand mal erklären was man hierunter versteht. Warum
deklariert man eine Funktion als 'gcc built-in' Funktion ??? Vielen Dank 
& schönes WE,
Andreas

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas schrieb:

> Kann mir jemand mal erklären was man hierunter versteht. Warum
> deklariert man eine Funktion als 'gcc built-in' Funktion ??? Vielen Dank
> & schönes WE,

Vermutlich um diesen Befehl in C überhaupt verwenden zu können. D.h. es 
entsteht dadurch wohl eine Funktion, die exakt diesen Befehl generiert, 
mitsamt Argument.

Autor: Andreas B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit etwas Google habe ich eine Seite aus der Nios gcc Doku gefunden, wo 
das drin steht.

Erstens kann deklariert man keine "builtin functions", man ruft sie auf 
— wie der Name schon sagt, sind das in gcc eingebaute Funktionen die 
immer zur Verfügung stehen.

Die __builtin_custom_xxx builtins erzeugen einfach eine Instruktion an 
dieser Stelle mit dem angegebenen Opcode. Der Buchstabencode ist i 
(int), f (float) und p (void*). n steht dabei für den Opcode und ist 
dementsprechend immer vorhanden.

__builtin_custom_ini() nimmt also ein int und hat ein int als Ergebnis. 
In deinem Beispiel wird das dann mit dem Opcode 0x00 sein. Der Nios 
Maschinencode ist wohl so regulär, dass sich das alles so einfach 
verpacken lässt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.