Forum: Projekte & Code Schneller kleiner CRC-Check AVR .ASM


von Thomas (kosmos)


Angehängte Dateien:

Lesenswert?

Hallo,

für ein Hausbusprojekt habe ich heute meinen CRC-Check fertiggestellt 
und wollte ihn hier mal veröffentlichen. Vielleicht kann der eine oder 
andere damit etwas anfangen.

Mein Augenmerk lag sowohl auf der Ausführungsgeschwindigkeit als auch 
auf der Codegröße. Im Mittel braucht er etwa 170-210 Takte und hat eine 
Codegröße von 38 Bytes.

Falls noch jemand was zum optimieren entdeckt, gerne um Feedback.

Viel Spaß damit

von Sam .. (sam1994)


Lesenswert?

Thomas O. schrieb:
> Falls noch jemand was zum optimieren entdeckt

Das hier
1
sbrc temp, 7        ;Prüfen ob höherwertigstes Bit = 1
2
rjmp XOR          ;wenn ja Exclusive OR
müsste sich zu einem brns XOR ersetzen lassen wenn man dafür sorgt, dass 
nur Operationen auf temp das SREG verändern. Mit ein bisschen umstellen 
von Operationen spart man noch einen Befehl. Ungetestet:
1
tst temp
2
brns XOR        ;wenn bit7 == 1: Exclusive OR schieben:
3
4
schieben:
5
lsl temp3          ;Die 3 Datenbytes werden jeweils
6
rol temp2          ;um 1 nach links geschoben
7
rol temp
8
test:
9
brnc schieben      ;wenn bit7 == 1: Exclusive OR schieben:
10
11
XOR:
12
eor temp, polynom
13
cpse temp3, zero
14
rjmp test
15
cpse temp2, zero
16
rjmp test
17
18
end: rjmp end

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.