Assembler Programm verstehen

#1562668
Lesenswert?

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
Gast #1563159
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren