Assembler Programm verstehen

Hallo,

Kapitän Nuss schrieb:
> Hallo,
> ich untersuche gerade ein fremdes Programm in Assembler für den ATmega8:
>
1
> myloop:   nop
2
>           rjmp  myloop
3
>
> Hat der nop Befehl eine Bedeutung für die Interruptlatenzzeit, oder
> hätte man den auch weglassen können?

Naja, er hat einen Einfluß, da nop nur einen Takt braucht, rjmp aber 2.

Das Problem ist jetzt: es ist kaum sinnvolle berechenbar (bei externen 
IRQs garnicht), bei welchem Befehl er auftritt. Es wird also manchmal 
einen und manchmal 2 Takte dauern.

Ohne den nop wären es immer 2 Takte, weil der Befehl, der zuende 
gebracht wird, eben immer ein rjmp wäre.

Gruß aus Berlin
Michael
Michael U. schrieb:

> Ohne den nop wären es immer 2 Takte, weil der Befehl, der zuende
> gebracht wird, eben immer ein rjmp wäre.

Nee, auch dann nicht "immer 2 Takte", denn das Interrupt-Ereignis kann 
ja auch mitten im rjmp eintreten.
Gast
Hi

>Nee, "immer" auch dann nicht, denn das Interrupt-Ereignis kann ja auch
>mitten im rjmp eintreten.

Aber ein Interrupt unterbricht keine laufenden Befehl.

MfG Spess
Gast
Wirklich Sinn macht das nicht. Es gibt aber Leute, die fürchten sich 
irgendwie vor Sprüngen auf sich selbst ("man kann ja nie wissen, ich 
schreib lieber 'mal nen NOP davor"). Um den mittleren Einfluss auf die 
Int-Latenz signifikant zu reduzieren, müsste man erheblich mehr NOPs 
verwenden. Da man aber so niemals die Worst Case Zeit reduziert, ist das 
eigentlich immer eine Lüge in die eigene Tasche. Wenn es wirklich auf 
minimale INT-Latenz ankommt (und es nur eine Int Quelle gibt), ist man 
mit Polling der Interruptquelle meist besser dran. Man spart sich so den 
eigentlichen Interrupt-Call und den Return.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.