Hallo, wie spiegelt man am schnellsten ein Byte, also wie vertauscht man Bit 7 und 0, 6 und 1, 5 und 2, 4 und 3? Gibt's etwas schnelles, als einzelne Bits in T-Flag und wieder raus? Gruß Axel
Voilà: ldi temp, 8 loop: rol quelle ror ziel dec temp cpi temp, 0 brne loop :-)
Hallo, danke für die Version, aber die Betonung lag auf schnell ;-) Deine Version benötigt 48Takte. Die folgende 16 Takte: bst r1, 7 bld r2, 0 bst r1, 6 bld r2, 1 bst r1, 5 bld r2, 2 bst r1, 4 bld r2, 3 bst r1, 3 bld r2, 4 bst r1, 2 bld r2, 5 bst r1, 1 bld r2, 6 bst r1, 0 bld r2, 7 Geht's nicht noch schneller? Gruß Axel
Ach so... ich habe auf Codegröße optimiert. Ich kann mir nicht vorstellen dass es schneller geht. Deine Version braucht nur 2 Befehle pro Bit, um das schneller zu machen müsste der AVR einen Befehl können der ein Bit direkt von einem Register in ein anderes kopieren kann... und das gibt es nicht. Wozu brauchst du so eine Funktion? FFT?
Hallo Andreas. deine Version wird übrigens ähnlich schnell, wenn man die Schleife abrollt. FFT? Nein viel trivialer. Ich will einen Graphik-LCD-Controller ansteuern, der seine Row-Leitungen nicht schön der Reihe nach an das Display legt sondern pro 8 Leitungen entweder komplett gespiegelt oder nur im HighNibble oder nur im LowNibble. Entweder mache lege ich mehrere Bitmaps für jedes Zeichen oder ich schüttele die Bits zur Laufzeit. Ich hatte die Hoffnung, daß es vielleicht einen kleinen Trick gibt, so wie z.B. die drei XORs zum Vertauschen, halt irgendetwas, daß die Bits gleichzeitig bearbeitet. Gruß Axel
Hallo Axel, wenn Du im Flash noch genug Platz (256 bytes) hast, kannst Du dort ein lookup table anlegen. LPM verbraucht 3 Cycles. Ist schnell, aber nicht elegant... Gruss, Kai
Hallo, Ein Byte negiert man, in dem man es Exclusiv-Oder mit FF (hex) verknüpft !!! Als Anfänger darf man noch solche schlechten Lösungen wie eure posten ...!
Leider die Frage nicht genau gelesen! Es wurde nach spiegeln nicht negieren gefragt.
Hallo, Profis lesen erstmal bevor sie posten ;-) Gruß Axel Höhmann P.S. Hat der Profi auch einen Namen?
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.