Forum: Compiler & IDEs Funktionsübersicht


von Dominik L (Gast)


Lesenswert?

Hallo!
Gibt es irgendwo eine Übersicht über die Funktionen, die man mit dem
GCC Compiler mit den mitgelieferten Libraries hat? Suche z.B. einen
Befehl, um das obere und untere Nibbel zu vertauschen. Komme nämlich
mit den inline Assembler auch nicht klar.

Wäre nett, wenn mir einer wenigstens bei einem Problem helfen könnte.

MFG Dominik

von Alex (Gast)


Lesenswert?

avr-libc Manual [WinAVR]

Der Link ist nach der Installation von WinAVR auf dem Desktop und im
Startmenü zu finden.

von Daniel B. (khani)


Lesenswert?

Hallo Dominik,

ist zwar ein bißchen spät, aber genau zum tauschen der nibbles ist im
Bereich "inline-assembly" ein Beispiel in der avr-libc-Dokumentation.
Außerdem versteht man den inline-assembler erst so richtig, wenn man ihn
mal ein wenig einstzt - learning by doing halt.

MfG, Daniel

von Dominik L (Gast)


Lesenswert?

Ja dankeschön erstmal. Hab das da auch schon gefunden und man höre und
staune, es hat sogar mit der Anwendung geklappt. Also lieben Dank für
die Hilfe.

MFG Dominik

von blöder ossi (Gast)


Lesenswert?

Also wenns nicht gerade auf den allerletzten CPU-Zyklus ankommt, sollte
man lieber in C programmieren:

  i = i >> 4 | (unsigned char)(i << 4);



Peter

von Rolf Magnus (Gast)


Lesenswert?

Ist ganz lustig, was der Compiler daraus macht. Er erkennt zwar, daß er
die Verschiebung um 4 Bit als swap umsetzen kann, merkt aber nicht, daß
beide mit einem swap erschlagen werden können. Er kopiert also den Wert
in ein zweites Register, "swap"t dann beide, schneidet von jedem die
"überflüssigen" 4 Bits per andi weg und fürt die Ergebnise dann per
or wieder zusammen.

von Daniel B. (khani)


Lesenswert?

Hm,

vielleicht realisiert der liebe Compiler dabei nicht, dass einen die
"heringeschobenen Nullen" nicht interessieren - macht der Compiler
bei
1
i = ((i >> 4)&0x0F) | ((i << 4)&0xF0);
was anderes ? Ich könnte es erst heute abend testen, denn hier habe ich
keinen Compiler zur Verfügung.

MfG, Daniel.

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.