AVR: Undokumentierte LAT Instruktion?

OP #1527513
Lesenswert?
• ▲
▼
Hallo,

ich schaue mir gerade ein wenig übersetzten C-Code mit dem Disassembler 
an.

Teilweise sind da schon sehr kuriose Konstrukte bei, die mir als alten 
ASM Programmierer die Haare zu Berge stehen lassen, aber das ist hier 
eher nebensächlich :-)

Dort taucht immer wieder die Assembler Instruktion "LAT" (Load And 
Toggle) auf, die aber in der Doku von Atmel nicht erwähnt ist. Was macht 
diese eigentlich?

Ciao...
Markus
OP #1527750
Lesenswert?
• ▲
▼
...naja, aber was machen sie denn nun im Code? Also irgendeinen Effekt 
müssen sie doch haben?

Ziel ist übrigens ein ATmega644. Einfach nachzuvollziehen:

#include <stdlib.h>

int main(void) {
 int i;

 i=rand();
}


In der rand() Funktion werden andere Funktionen aus der C-Bibliothek 
aufgerufen, in einer kommt dann z.B. sowas vor:

+00000143:   941A        DEC       R1             Decrement
+00000144:   F769        BRNE      PC-0x12        Branch if not equal
+00000145:   9560        LAT       R22            Load and Toggle
+00000146:   9570        LAT       R23            Load and Toggle
+00000147:   9580        LAT       R24            Load and Toggle
+00000148:   9590        LAT       R25            Load and Toggle
+00000149:   019B        MOVW      R18,R22        Copy register pair
+0000014A:   01AC        MOVW      R20,R24        Copy register pair
+0000014B:   01BD        MOVW      R22,R26        Copy register pair
+0000014C:   01CF        MOVW      R24,R30        Copy register pair
+0000014D:   9508        RET                      Subroutine return

Ciao...
Markus

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.