Bits elegant spiegeln, wie?

Gast #11568
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
Admin Persönliche Seite #11569
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?
Gast #11570
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
Gast #11571
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
Gast #11572
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 
...!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 24 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.