📄 nnm.nc
字号:
"adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T03: mul r14, r15 \n\t" //t=3 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r5, r0 \n\t" "adc r6, r1 \n\t" "adc r7, r24 \n\t" "brcc SQR_T04 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T04: ld r15, Y+ \n\t" //load c[j*d+1] "mul r11, r15 \n\t" //t=0, b0*c "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r3, r0 \n\t" "adc r4, r1 \n\t" "adc r5, r24 \n\t" "brcc SQR_T11 \n\t" "adc r6, r19 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T11: mul r12, r15 \n\t" //t=1 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r4, r0 \n\t" "adc r5, r1 \n\t" "adc r6, r24 \n\t" "brcc SQR_T12 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T12: mul r13, r15 \n\t" //t=2 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r5, r0 \n\t" "adc r6, r1 \n\t" "adc r7, r24 \n\t" "brcc SQR_T13 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T13: mul r14, r15 \n\t" //t=3 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r6, r0 \n\t" "adc r7, r1 \n\t" "adc r8, r24 \n\t" "brcc SQR_T14 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T14: ld r15, Y+ \n\t" //load c[j*d+2] "mul r11, r15 \n\t" //t=0, b0*c "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r4, r0 \n\t" "adc r5, r1 \n\t" "adc r6, r24 \n\t" "brcc SQR_T21 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T21: mul r12, r15 \n\t" //t=1 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r5, r0 \n\t" "adc r6, r1 \n\t" "adc r7, r24 \n\t" "brcc SQR_T22 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T22: mul r13, r15 \n\t" //t=2 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r6, r0 \n\t" "adc r7, r1 \n\t" "adc r8, r24 \n\t" "brcc SQR_T23 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T23: mul r14, r15 \n\t" //t=3 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r7, r0 \n\t" "adc r8, r1 \n\t" "adc r9, r24 \n\t" "adc r10, r19 \n\t" "SQR_T24: ld r15, Y+ \n\t" //load c[j*d+3] "mul r11, r15 \n\t" //t=0, b0*c "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r5, r0 \n\t" "adc r6, r1 \n\t" "adc r7, r24 \n\t" "brcc SQR_T31 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T31: mul r12, r15 \n\t" //t=1 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r6, r0 \n\t" "adc r7, r1 \n\t" "adc r8, r24 \n\t" "brcc SQR_T32 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T32: mul r13, r15 \n\t" //t=2 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r7, r0 \n\t" "adc r8, r1 \n\t" "adc r9, r24 \n\t" "adc r10, r19 \n\t" "SQR_T33: mul r14, r15 \n\t" //t=3 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r8, r0 \n\t" "adc r9, r1 \n\t" "adc r10, r24 \n\t" "inc r17 \n\t" //j++ "jmp SQR_LOOP2 \n\t" "EQ_1: ld r14, -X \n\t" //load b0~b(d-1) "ld r13, -X \n\t" "ld r12, -X \n\t" "ld r11, -X \n\t" "ld r15, Y+ \n\t" //load c[j*d+0] "mul r11, r15 \n\t" //t=0 "add r2, r0 \n\t" "adc r3, r1 \n\t" "adc r4, r19 \n\t" "brcc EQ_SQR_T01 \n\t" "adc r5, r19 \n\t" "adc r6, r19 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "EQ_SQR_T01: mul r12, r15 \n\t" "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r3, r0 \n\t" "adc r4, r1 \n\t" "adc r5, r24 \n\t" "brcc EQ_SQR_T02 \n\t" "adc r6, r19 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "EQ_SQR_T02: mul r13, r15 \n\t" "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r4, r0 \n\t" "adc r5, r1 \n\t" "adc r6, r24 \n\t" "brcc EQ_SQR_T03 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "EQ_SQR_T03: mul r14, r15 \n\t" "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r5, r0 \n\t" "adc r6, r1 \n\t" "adc r7, r24 \n\t" "brcc EQ_SQR_T04 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "EQ_SQR_T04: ld r15, Y+ \n\t" //load c[j*d+1] "mul r12, r15 \n\t" //t=1 "add r4, r0 \n\t" "adc r5, r1 \n\t" "adc r6, r19 \n\t" "brcc EQ_SQR_T12 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "EQ_SQR_T12: mul r13, r15 \n\t" //t=2 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r5, r0 \n\t" "adc r6, r1 \n\t" "adc r7, r24 \n\t" "brcc EQ_SQR_T13 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "EQ_SQR_T13: mul r14, r15 \n\t" //t=3 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r6, r0 \n\t" "adc r7, r1 \n\t" "adc r8, r24 \n\t" "brcc EQ_SQR_T14 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "EQ_SQR_T14: ld r15, Y+ \n\t" //load c[j*d+2] "mul r13, r15 \n\t" //t=2 "add r6, r0 \n\t" "adc r7, r1 \n\t" "brcc EQ_SQR_T23 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "EQ_SQR_T23: mul r14, r15 \n\t" //t=3 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r7, r0 \n\t" "adc r8, r1 \n\t" "adc r9, r24 \n\t" "adc r10, r19 \n\t" "ld r15, Y+ \n\t" //load c[j*d+3] "mul r14, r15 \n\t" //t=3 "add r8, r0 \n\t" "adc r9, r1 \n\t" "adc r10, r19 \n\t" "SQR_LOOP2_EXIT: st Z+, r2 \n\t" //a[i*d] = r2 "st Z+, r3 \n\t" "st Z+, r4 \n\t" "st Z+, r5 \n\t" "movw r2, r6 \n\t" //can be speed up use movw "movw r4, r8 \n\t" "mov r6, r10 \n\t" //can be remove "clr r7 \n\t" "clr r8 \n\t" "clr r9 \n\t" "clr r10 \n\t" "cp r16, %2 \n\t" //i == 4? "breq SQR_LOOP1_EXIT \n\t" "inc r16 \n\t" "jmp SQR_LOOP1 \n\t" "SQR_LOOP1_EXIT: inc r16 \n\t" //i = 5 "SQR_LOOP3: mov r17, r16 \n\t" //j = i-4 "sub r17, %2 \n\t" "mul r25, %2 \n\t" "add r0, r25 \n\t" "movw r26, %A1 \n\t" "add r26, r0 \n\t" "adc r27, r1 \n\t" //load b "mul r17, r25 \n\t" //j*d "movw r28, %A1 \n\t" "add r28, r0 \n\t" "adc r29, r1 \n\t" //load c "SQR_LOOP4: mov r0, r16 \n\t" "sub r0, r17 \n\t" "cp r0, r17 \n\t" "breq JMP_EQ_2 \n\t" "brlo JMP_SQR_LOOP4_EXIT \n\t" "jmp SQR_LOOP4_1 \n\t" "JMP_EQ_2: jmp EQ_2 \n\t" "JMP_SQR_LOOP4_EXIT: jmp SQR_LOOP4_EXIT \n\t" "SQR_LOOP4_1: ld r14, -X \n\t" //load b0~b(d-1) "ld r13, -X \n\t" "ld r12, -X \n\t" "ld r11, -X \n\t" "ld r15, Y+ \n\t" //load c[j*d+0] "mul r11, r15 \n\t" //t=0 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r2, r0 \n\t" "adc r3, r1 \n\t" "adc r4, r24 \n\t" "brcc SQR_T41 \n\t" "adc r5, r19 \n\t" "adc r6, r19 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T41: mul r12, r15 \n\t" //t=1 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r3, r0 \n\t" "adc r4, r1 \n\t" "adc r5, r24 \n\t" "brcc SQR_T42 \n\t" "adc r6, r19 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T42: mul r13, r15 \n\t" //t=2 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r4, r0 \n\t" "adc r5, r1 \n\t" "adc r6, r24 \n\t" "brcc SQR_T43 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T43: mul r14, r15 \n\t" //t=3 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r5, r0 \n\t" "adc r6, r1 \n\t" "adc r7, r24 \n\t" "brcc SQR_T44 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T44: ld r15, Y+ \n\t" //load c "mul r11, r15 \n\t" //t=0, b0*c "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r3, r0 \n\t" "adc r4, r1 \n\t" "adc r5, r24 \n\t" "brcc SQR_T51 \n\t" "adc r6, r19 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T51: mul r12, r15 \n\t" //t=1 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r4, r0 \n\t" "adc r5, r1 \n\t" "adc r6, r24 \n\t" "brcc SQR_T52 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T52: mul r13, r15 \n\t" //t=2 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r5, r0 \n\t" "adc r6, r1 \n\t" "adc r7, r24 \n\t" "brcc SQR_T53 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T53: mul r14, r15 \n\t" //t=3 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r6, r0 \n\t" "adc r7, r1 \n\t" "adc r8, r24 \n\t" "brcc SQR_T54 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T54: ld r15, Y+ \n\t" //load c "mul r11, r15 \n\t" //t=0, b0*c "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r4, r0 \n\t" "adc r5, r1 \n\t" "adc r6, r24 \n\t" "brcc SQR_T61 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T61: mul r12, r15 \n\t" //t=1 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r5, r0 \n\t" "adc r6, r1 \n\t" "adc r7, r24 \n\t" "brcc SQR_T62 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T62: mul r13, r15 \n\t" //t=2 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r6, r0 \n\t" "adc r7, r1 \n\t" "adc r8, r24 \n\t" "brcc SQR_T63 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T63: mul r14, r15 \n\t" //t=3 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r7, r0 \n\t" "adc r8, r1 \n\t" "adc r9, r24 \n\t" "adc r10, r19 \n\t" "SQR_T64: ld r15, Y+ \n\t" //load c "mul r11, r15 \n\t" //t=0, b0*c "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r5, r0 \n\t" "adc r6, r1 \n\t" "adc r7, r24 \n\t" "brcc SQR_T71 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T71: mul r12, r15 \n\t" //t=1 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r6, r0 \n\t" "adc r7, r1 \n\t" "adc r8, r24 \n\t" "brcc SQR_T72 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "SQR_T72: mul r13, r15 \n\t" //t=2 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r7, r0 \n\t" "adc r8, r1 \n\t" "adc r9, r24 \n\t" "adc r10, r19 \n\t" "SQR_T73: mul r14, r15 \n\t" //t=3 "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r8, r0 \n\t" "adc r9, r1 \n\t" "adc r10, r24 \n\t" "inc r17 \n\t" "jmp SQR_LOOP4 \n\t" "EQ_2: ld r14, -X \n\t" //load b0~b(d-1) "ld r13, -X \n\t" "ld r12, -X \n\t" "ld r11, -X \n\t" "ld r15, Y+ \n\t" //load c[j*d+0] "mul r11, r15 \n\t" //t=0 "add r2, r0 \n\t" "adc r3, r1 \n\t" "adc r4, r19 \n\t" "brcc EQ_SQR_T41 \n\t" "adc r5, r19 \n\t" "adc r6, r19 \n\t" "adc r7, r19 \n\t" "adc r8, r19 \n\t" "adc r9, r19 \n\t" "adc r10, r19 \n\t" "EQ_SQR_T41: mul r12, r15 \n\t" "clr r24 \n\t" "lsl r0 \n\t" "rol r1 \n\t" "rol r24 \n\t" "add r3, r0 \n\t" "adc r4, r1 \n\t" "adc r5, r24 \n\t" "brcc EQ_SQR_T42 \n\t" "adc r6, r19 \n\t" "adc r7, r19 \n\t"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -