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
avr-libc Manual [WinAVR] Der Link ist nach der Installation von WinAVR auf dem Desktop und im Startmenü zu finden.
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
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
Also wenns nicht gerade auf den allerletzten CPU-Zyklus ankommt, sollte man lieber in C programmieren: i = i >> 4 | (unsigned char)(i << 4); Peter
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.