Forum: Compiler & IDEs GCC Built in Functions


von Andreas (Gast)


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:

1
#define ALT_CI_BITSWAP_N 0x00
2
#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

von (prx) A. K. (prx)


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.

von Andreas B. (Gast)


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.

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
Noch kein Account? Hier anmelden.