Forum: Mikrocontroller und Digitale Elektronik "INTRINSIC" Funktion ?


von Jan (Gast)


Lesenswert?

Hallo allerseits,

ich verwende ein Library in deren Funktionsbeschreibung einige 
Funktionen als "INTRINSIC" bezeichnet werden. Was bedeutet dies?

Danke schonmal im voraus ;-)

Gruss, Jan

von Karl H. (kbuchegg)


Lesenswert?

Jan schrieb:
> Hallo allerseits,
>
> ich verwende ein Library in deren Funktionsbeschreibung einige
> Funktionen als "INTRINSIC" bezeichnet werden. Was bedeutet dies?

Was es genau bedeutet steht in der Doku zu deinem Compiler, da es sich 
um keine Standard-C Schlüsselwort handelt.

Intrinsic wird meistens verwendet um anzuzeigen, dass der Compiler das 
Verhalen einer Funktion kennt und mit dieser Funktion wie mit einer 
inline Funktion arbeitet, selbst wenn er den Funktionsrumpf nicht sieht.

strlen ist zb so ein Kandidat.
Die Funktion ist trivial und man hat in den Compiler eingebaut wie sie 
funktioniert. D.h. auch ohne das der Compiler die Implementierung der 
Funktion sieht wird er sich so verhalten, als ob er ein
1
inline size_t strlen( const char * s )
2
{
3
  size_t result = 0;
4
  while( *s++ )
5
    result++;
6
7
  return result;
8
}
vorgesetzt bekommen hätte. Wobei er bei intrinsic Funktionen nicht erst 
lange den C-Code analysiert, sondern die 'Übersetzung' quasi schon 
eingebaut hat und mit viel mehr Wissen in den Code einbauen kann.
Intrinsic könnte man als 'in den Compiler eingebaute Funktionen' 
bezeichnen.

von Jan (Gast)


Lesenswert?

Danke fuer Deine ausfuehrliche Antwort.
Das bringt einiges Licht ins Dunkel ;-)

Gruss, Jan

von Arc N. (arc)


Lesenswert?

Man könnte noch hinzufügen, dass Intrinsics meistens Funktionen sind, 
die sich auf bestimmte Fähigkeiten der Hardware beziehen und nicht mit 
normalem C nutzbar sind. Auf dem PC z.B. diverse SSE-Befehle, bei ARMs 
z.B. Multiply-And-Accumulate- und SIMD-Befehle.

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.