📄 spline.lis
字号:
05CE 0E940000 xcall push_arg4
05D2 0E940000 xcall push_gset5
05D6 7901 movw R14,R18
05D8 EF97 sbiw R28,63
05DA 6197 sbiw R28,17 ; offset = 80
05DC .dbline -1
05DC .dbline 166
05DC ; { sl->Px[i] = (float)pt[i].x;
05DC ; sl->Py[i] = (float)pt[i].y;
05DC ; }
05DC ; }
05DC ;
05DC ;
05DC ;
05DC ; /****************************************************************************
05DC ; * 名称:SPLINE_MatrixSolve()
05DC ; * 功能:求解矩阵。
05DC ; * 入口参数:sl 要操作的样条曲线对象,SPLINE结构
05DC ; * B 需操作B点数据(数组)
05DC ; * 出口参数:无
05DC ; * 说明:由SPLINE_Generate()调用,计算值保存在B返回。
05DC ; ****************************************************************************/
05DC ; void SPLINE_MatrixSolve(SPLINE *sl, float B[])
05DC ; { float Work[NPMAX];
05DC .dbline 170
05DC ; float WorkB[NPMAX];
05DC ; int i, j;
05DC ;
05DC ; for(i=0; i<=(sl->Np-1); i++)
05DC CC24 clr R12
05DE DD24 clr R13
05E0 47C0 xjmp L39
05E2 L36:
05E2 .dbline 171
05E2 .dbline 171
05E2 04E0 ldi R16,4
05E4 10E0 ldi R17,0
05E6 9601 movw R18,R12
05E8 0E940000 xcall empy16s
05EC 1801 movw R2,R16
05EE F101 movw R30,R2
05F0 EE0D add R30,R14
05F2 FF1D adc R31,R15
05F4 4080 ldd R4,z+0
05F6 5180 ldd R5,z+1
05F8 6280 ldd R6,z+2
05FA 7380 ldd R7,z+3
05FC 7A92 st -y,R7
05FE 6A92 st -y,R6
0600 5A92 st -y,R5
0602 4A92 st -y,R4
0604 ; stack offset 4
0604 FE01 movw R30,R28
0606 E25A subi R30,162 ; addi 94
0608 FF4F sbci R31,255
060A 8081 ldd R24,z+0
060C 9181 ldd R25,z+1
060E 8859 subi R24,152 ; offset = 360
0610 9E4F sbci R25,254
0612 F101 movw R30,R2
0614 E80F add R30,R24
0616 F91F adc R31,R25
0618 4080 ldd R4,z+0
061A 5180 ldd R5,z+1
061C 6280 ldd R6,z+2
061E 7380 ldd R7,z+3
0620 7A92 st -y,R7
0622 6A92 st -y,R6
0624 5A92 st -y,R5
0626 4A92 st -y,R4
0628 0E940000 xcall div32f
062C CE01 movw R24,R28
062E 8896 adiw R24,40
0630 F101 movw R30,R2
0632 E80F add R30,R24
0634 F91F adc R31,R25
0636 0083 std z+0,R16
0638 1183 std z+1,R17
063A 2283 std z+2,R18
063C 3383 std z+3,R19
063E .dbline 172
063E 04E0 ldi R16,4
0640 10E0 ldi R17,0
0642 9601 movw R18,R12
0644 0E940000 xcall empy16s
0648 CE01 movw R24,R28
064A 8896 adiw R24,40
064C F801 movw R30,R16
064E E80F add R30,R24
0650 F91F adc R31,R25
0652 2080 ldd R2,z+0
0654 3180 ldd R3,z+1
0656 4280 ldd R4,z+2
0658 5380 ldd R5,z+3
065A CE01 movw R24,R28
065C F801 movw R30,R16
065E E80F add R30,R24
0660 F91F adc R31,R25
0662 2082 std z+0,R2
0664 3182 std z+1,R3
0666 4282 std z+2,R4
0668 5382 std z+3,R5
066A .dbline 173
066A L37:
066A .dbline 170
066A C601 movw R24,R12
066C 0196 adiw R24,1
066E 6C01 movw R12,R24
0670 L39:
0670 .dbline 170
0670 DE01 movw R26,R28
0672 A65A subi R26,166 ; addi 90
0674 BF4F sbci R27,255
0676 ED91 ld R30,x+
0678 FC91 ld R31,x
067A E854 subi R30,72 ; addi 440
067C FE4F sbci R31,254
067E 8081 ldd R24,z+0
0680 9181 ldd R25,z+1
0682 0197 sbiw R24,1
0684 8C15 cp R24,R12
0686 9D05 cpc R25,R13
0688 0CF0 brlt X4
068A ABCF xjmp L36
068C X4:
068C .dbline 175
068C ; { Work[i] = B[i] / sl->Mat[1][i];
068C ; WorkB[i] = Work[i];
068C ; }
068C ;
068C ; for(j=0; j<10; j++)
068C AA24 clr R10
068E BB24 clr R11
0690 L40:
0690 .dbline 176
0690 ; { Work[0] = (B[0] - sl->Mat[2][0] * WorkB[1]) / sl->Mat[1][0];
0690 .dbline 176
0690 F701 movw R30,R14
0692 2080 ldd R2,z+0
0694 3180 ldd R3,z+1
0696 4280 ldd R4,z+2
0698 5380 ldd R5,z+3
069A 5A92 st -y,R5
069C 4A92 st -y,R4
069E 3A92 st -y,R3
06A0 2A92 st -y,R2
06A2 ; stack offset 4
06A2 DE01 movw R26,R28
06A4 A25A subi R26,162 ; addi 94
06A6 BF4F sbci R27,255
06A8 ED91 ld R30,x+
06AA FC91 ld R31,x
06AC E057 subi R30,112 ; addi 400
06AE FE4F sbci R31,254
06B0 2080 ldd R2,z+0
06B2 3180 ldd R3,z+1
06B4 4280 ldd R4,z+2
06B6 5380 ldd R5,z+3
06B8 5A92 st -y,R5
06BA 4A92 st -y,R4
06BC 3A92 st -y,R3
06BE 2A92 st -y,R2
06C0 FE01 movw R30,R28
06C2 ; stack offset 8
06C2 2484 ldd R2,z+12
06C4 3584 ldd R3,z+13
06C6 4684 ldd R4,z+14
06C8 5784 ldd R5,z+15
06CA 5A92 st -y,R5
06CC 4A92 st -y,R4
06CE 3A92 st -y,R3
06D0 2A92 st -y,R2
06D2 0E940000 xcall empy32fs
06D6 0E940000 xcall sub32fs
06DA ; stack offset 4
06DA DE01 movw R26,R28
06DC A25A subi R26,162 ; addi 94
06DE BF4F sbci R27,255
06E0 ED91 ld R30,x+
06E2 FC91 ld R31,x
06E4 E859 subi R30,152 ; addi 360
06E6 FE4F sbci R31,254
06E8 2080 ldd R2,z+0
06EA 3180 ldd R3,z+1
06EC 4280 ldd R4,z+2
06EE 5380 ldd R5,z+3
06F0 5A92 st -y,R5
06F2 4A92 st -y,R4
06F4 3A92 st -y,R3
06F6 2A92 st -y,R2
06F8 0E940000 xcall div32f
06FC FE01 movw R30,R28
06FE 00A7 std z+40,R16
0700 11A7 std z+41,R17
0702 22A7 std z+42,R18
0704 33A7 std z+43,R19
0706 .dbline 177
0706 ; for(i=1; i<(sl->Np-1); i++ )
0706 81E0 ldi R24,1
0708 90E0 ldi R25,0
070A 6C01 movw R12,R24
070C 77C0 xjmp L48
070E L45:
070E .dbline 178
070E .dbline 178
070E 04E0 ldi R16,4
0710 10E0 ldi R17,0
0712 9601 movw R18,R12
0714 0E940000 xcall empy16s
0718 1801 movw R2,R16
071A F101 movw R30,R2
071C EE0D add R30,R14
071E FF1D adc R31,R15
0720 4080 ldd R4,z+0
0722 5180 ldd R5,z+1
0724 6280 ldd R6,z+2
0726 7380 ldd R7,z+3
0728 7A92 st -y,R7
072A 6A92 st -y,R6
072C 5A92 st -y,R5
072E 4A92 st -y,R4
0730 ; stack offset 4
0730 FE01 movw R30,R28
0732 E25A subi R30,162 ; addi 94
0734 FF4F sbci R31,255
0736 8081 ldd R24,z+0
0738 9181 ldd R25,z+1
073A 805C subi R24,192 ; offset = 320
073C 9E4F sbci R25,254
073E F101 movw R30,R2
0740 E80F add R30,R24
0742 F91F adc R31,R25
0744 4080 ldd R4,z+0
0746 5180 ldd R5,z+1
0748 6280 ldd R6,z+2
074A 7380 ldd R7,z+3
074C 7A92 st -y,R7
074E 6A92 st -y,R6
0750 5A92 st -y,R5
0752 4A92 st -y,R4
0754 CE01 movw R24,R28
0756 ; stack offset 8
0756 0496 adiw R24,4
0758 F101 movw R30,R2
075A E80F add R30,R24
075C F91F adc R31,R25
075E 4080 ldd R4,z+0
0760 5180 ldd R5,z+1
0762 6280 ldd R6,z+2
0764 7380 ldd R7,z+3
0766 7A92 st -y,R7
0768 6A92 st -y,R6
076A 5A92 st -y,R5
076C 4A92 st -y,R4
076E 0E940000 xcall empy32fs
0772 0E940000 xcall sub32fs
0776 ; stack offset 4
0776 FE01 movw R30,R28
0778 E25A subi R30,162 ; addi 94
077A FF4F sbci R31,255
077C 8081 ldd R24,z+0
077E 9181 ldd R25,z+1
0780 8057 subi R24,112 ; offset = 400
0782 9E4F sbci R25,254
0784 F101 movw R30,R2
0786 E80F add R30,R24
0788 F91F adc R31,R25
078A 4080 ldd R4,z+0
078C 5180 ldd R5,z+1
078E 6280 ldd R6,z+2
0790 7380 ldd R7,z+3
0792 7A92 st -y,R7
0794 6A92 st -y,R6
0796 5A92 st -y,R5
0798 4A92 st -y,R4
079A CE01 movw R24,R28
079C ; stack offset 8
079C 0C96 adiw R24,12
079E F101 movw R30,R2
07A0 E80F add R30,R24
07A2 F91F adc R31,R25
07A4 4080 ldd R4,z+0
07A6 5180 ldd R5,z+1
07A8 6280 ldd R6,z+2
07AA 7380 ldd R7,z+3
07AC 7A92 st -y,R7
07AE 6A92 st -y,R6
07B0 5A92 st -y,R5
07B2 4A92 st -y,R4
07B4 0E940000 xcall empy32fs
07B8 0E940000 xcall sub32fs
07BC ; stack offset 4
07BC FE01 movw R30,R28
07BE E25A subi R30,162 ; addi 94
07C0 FF4F sbci R31,255
07C2 8081 ldd R24,z+0
07C4 9181 ldd R25,z+1
07C6 8859 subi R24,152 ; offset = 360
07C8 9E4F sbci R25,254
07CA F101 movw R30,R2
07CC E80F add R30,R24
07CE F91F adc R31,R25
07D0 4080 ldd R4,z+0
07D2 5180 ldd R5,z+1
07D4 6280 ldd R6,z+2
07D6 7380 ldd R7,z+3
07D8 7A92 st -y,R7
07DA 6A92 st -y,R6
07DC 5A92 st -y,R5
07DE 4A92 st -y,R4
07E0 0E940000 xcall div32f
07E4 CE01 movw R24,R28
07E6 8896 adiw R24,40
07E8 F101 movw R30,R2
07EA E80F add R30,R24
07EC F91F adc R31,R25
07EE 0083 std z+0,R16
07F0 1183 std z+1,R17
07F2 2283 std z+2,R18
07F4 3383 std z+3,R19
07F6 .dbline 179
07F6 L46:
07F6 .dbline 177
07F6 C601 movw R24,R12
07F8 0196 adiw R24,1
07FA 6C01 movw R12,R24
07FC L48:
07FC .dbline 177
07FC DE01 movw R26,R28
07FE A65A subi R26,166 ; addi 90
0800 BF4F sbci R27,255
0802 ED91 ld R30,x+
0804 FC91 ld R31,x
0806 E854 subi R30,72 ; addi 440
0808 FE4F sbci R31,254
080A 8081 ldd R24,z+0
080C 9181 ldd R25,z+1
080E 0197 sbiw R24,1
0810 C816 cp R12,R24
0812 D906 cpc R13,R25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -