Skip to main content
. 2020 Apr 5;20(7):2039. doi: 10.3390/s20072039
Algorithm 2 LUT-based modular reduction in source code (mod 7681)
Input: operands R22, R23, R24, R25 17: LDI R31, hi8(LUT1_H)
18: LPM R23, Z
Output: results {R24, R25}
19: ADD R18, R22
1: CLR R26 {MOV-and-ADD} 20: ADC R19, R23
2: MUL R24, R22 21: ADC R20, R20 {Register re-use}
3: MOVW R18, R0
4: MUL R25, R23 22: MOV R30, R19
5: MOVW R20, R0 23: ANDI R19, 0X1F
24: LSR R20
6: MOVW R18, R0 25: ROR R30
7: ADD R19, R0
8: MOVW R18, R0 26: ANDI R30, 0XF0
9: MOVW R18, R0 27: ADD R30, R21
28: LDI R31, hi8(LUT2_L) {LUT access}
10: MOVW R18, R0 29: LPM R24, Z
11: MOVW R18, R0
12: ADC R20, R1 30: LDI R31, hi8(LUT2_H)
13: ADC R21, R26 31: LPM R25, Z
14: MOV R30, R20 32: ADD R24, R18
15: LDI R31, hi8(LUT1_L) {LUT access} 33: ADC R25, R19
16: LPM R22, Z 34: CLR R1