📄 fftbook.lst
字号:
0650 920A ST R0,-Y
0651 2FE0 MOV R30,R16
0652 2FF1 MOV R31,R17
0653 95C8 LPM
0654 2D00 MOV R16,R0
0655 9631 ADIW R30,1
0656 95C8 LPM
0657 2D10 MOV R17,R0
0658 9631 ADIW R30,1
0659 95C8 LPM
065A 2D20 MOV R18,R0
065B 9631 ADIW R30,1
065C 95C8 LPM
065D 2D30 MOV R19,R0
065E 9009 LD R0,Y+
065F 91F9 LD R31,Y+
0660 91E9 LD R30,Y+
0661 9508 RET
lsl32:
0662 920F PUSH R0
0663 9009 LD R0,Y+
0664 2000 TST R0
0665 F031 BEQ 0x066C
0666 0F00 LSL R16
0667 1F11 ROL R17
0668 1F22 ROL R18
0669 1F33 ROL R19
066A 940A DEC R0
066B CFF8 RJMP 0x0664
066C 900F POP R0
066D 9508 RET
fp2int:
066E 940E0898 CALL savfacc1
0670 D014 RCALL FTOI
0671 2F02 MOV R16,R18
0672 2F13 MOV R17,R19
0673 FD87 SBRC R24,7
0674 C002 RJMP nojump1
0675 940C089B JMP restorefacc1
nojump1:
0677 9510 COM R17
0678 9501 NEG R16
0679 4F1F SBCI R17,0xFF
067A 940C089B JMP restorefacc1
fp2long:
067C 940E0898 CALL savfacc1
067E D008 RCALL FTOL
067F FF87 SBRS R24,7
0680 C002 RJMP nojump2
0681 940E0645 CALL neg32
nojump2:
0683 940C089B JMP restorefacc1
FTOI:
0685 E0BE LDI R27,0xE
0686 C001 RJMP 0x0688
FTOL:
0687 E1BE LDI R27,0x1E
0688 940E089E CALL unpackfacc1
068A F069 BEQ 0x0698
068B 1BB3 SUB R27,R19
068C F009 BEQ 0x068E
068D F472 BPL 0x069C
068E 2388 TST R24
068F F022 BMI 0x0694
0690 E010 LDI R17,0
0691 E604 LDI R16,0x64
0692 940C064E JMP lpm32
0694 E010 LDI R17,0
0695 E60A LDI R16,0x6A
0696 940C064E JMP lpm32
0698 E010 LDI R17,0
0699 E608 LDI R16,0x68
069A 940C064E JMP lpm32
069C 9533 INC R19
069D F3D2 BMI 0x0698
069E E030 LDI R19,0
069F 50B8 SUBI R27,0x8
06A0 F452 BPL 0x06AB
06A1 5FB8 SUBI R27,0xF8
06A2 2F32 MOV R19,R18
06A3 2F21 MOV R18,R17
06A4 2F10 MOV R17,R16
06A5 E800 LDI R16,0x80
06A6 C006 RJMP 0x06AD
06A7 2F01 MOV R16,R17
06A8 2F12 MOV R17,R18
06A9 E020 LDI R18,0
06AA 50B8 SUBI R27,0x8
06AB 30B8 CPI R27,0x8
06AC F7D0 BCC 0x06A7
06AD 23BB TST R27
06AE F031 BEQ 0x06B5
06AF 9536 LSR R19
06B0 9527 ROR R18
06B1 9517 ROR R17
06B2 9507 ROR R16
06B3 95BA DEC R27
06B4 F7D1 BNE 0x06AF
06B5 9508 RET
int2fp:
06B6 2722 CLR R18
06B7 FD17 SBRC R17,7
06B8 9520 COM R18
06B9 2733 CLR R19
06BA FD27 SBRC R18,7
06BB 9530 COM R19
long2fp:
06BC 940E0898 CALL savfacc1
06BE D002 RCALL ITOF
06BF 940C089B JMP restorefacc1
ITOF:
06C1 2788 CLR R24
06C2 2333 TST R19
06C3 F41A BPL 0x06C7
06C4 940E0645 CALL neg32
06C6 9580 COM R24
06C7 2FB0 MOV R27,R16
06C8 2BB1 OR R27,R17
06C9 2BB2 OR R27,R18
06CA 2BB3 OR R27,R19
06CB F411 BNE 0x06CE
06CC 940C08B4 JMP minres
06CE E1B6 LDI R27,0x16
06CF C005 RJMP itof2
06D0 95B3 INC R27
06D1 9536 LSR R19
06D2 9527 ROR R18
06D3 9517 ROR R17
06D4 9507 ROR R16
itof2:
06D5 2333 TST R19
06D6 F7C9 BNE 0x06D0
itof3:
06D7 2322 TST R18
06D8 F449 BNE 0x06E2
06D9 50B8 SUBI R27,0x8
06DA 2F21 MOV R18,R17
06DB 2F10 MOV R17,R16
06DC E000 LDI R16,0
06DD CFF9 RJMP itof3
06DE 95BA DEC R27
06DF 0F00 LSL R16
06E0 1F11 ROL R17
06E1 1F22 ROL R18
06E2 F7DA BPL 0x06DE
06E3 2F3B MOV R19,R27
06E4 940C08DE JMP repack
save_floatregs:
06E6 92DA ST R13,-Y
06E7 92EA ST R14,-Y
06E8 92FA ST R15,-Y
06E9 938A ST R24,-Y
06EA 922A ST R2,-Y
06EB 923A ST R3,-Y
06EC 924A ST R4,-Y
06ED 939A ST R25,-Y
06EE 93AA ST R26,-Y
06EF 93BA ST R27,-Y
06F0 9508 RET
restore_floatregs:
06F1 91B9 LD R27,Y+
06F2 91A9 LD R26,Y+
06F3 9199 LD R25,Y+
06F4 9049 LD R4,Y+
06F5 9039 LD R3,Y+
06F6 9029 LD R2,Y+
06F7 9189 LD R24,Y+
06F8 90F9 LD R15,Y+
06F9 90E9 LD R14,Y+
06FA 90D9 LD R13,Y+
06FB 9508 RET
stk2arg1:
06FC 842A LDD R2,Y+10
06FD 843B LDD R3,Y+11
06FE 844C LDD R4,Y+12
06FF 859D LDD R25,Y+13
0700 9508 RET
stk2arg0:
0701 850E LDD R16,Y+14
0702 851F LDD R17,Y+15
0703 8928 LDD R18,Y+16
0704 8939 LDD R19,Y+17
0705 9508 RET
float_epilog:
0706 DFEA RCALL restore_floatregs
0707 920F PUSH R0
0708 B60F IN R0,0x3F
0709 9628 ADIW R28,0x8
070A BE0F OUT 0x3F,R0
070B 900F POP R0
070C 9508 RET
float_prolog:
070D DFD8 RCALL save_floatregs
070E DFF2 RCALL stk2arg0
070F CFEC RJMP stk2arg1
add32fs:
0710 D002 RCALL add32f
0711 940C05B6 JMP push_arg4
add32f:
0713 940E070D CALL float_prolog
0715 D012 RCALL FADD
0716 940C0706 JMP float_epilog
sub32fs:
0718 D002 RCALL sub32f
0719 940C05B6 JMP push_arg4
sub32f:
071B 940E070D CALL float_prolog
071D D009 RCALL FSUB
071E 940C0706 JMP float_epilog
fret2:
0720 2F8A MOV R24,R26
0721 2F39 MOV R19,R25
0722 2D24 MOV R18,R4
0723 2D13 MOV R17,R3
0724 2D02 MOV R16,R2
0725 940C08DE JMP repack
FSUB:
0727 5890 SUBI R25,0x80
FADD:
0728 940E08CC CALL unpack
072A 3890 CPI R25,0x80
072B F3C9 BEQ 0x0725
072C 3830 CPI R19,0x80
072D F391 BEQ 0x0720
072E 2FB3 MOV R27,R19
072F 1BB9 SUB R27,R25
0730 F3A3 BVS 0x0725
0731 F02A BMI 0x0737
0732 F439 BNE 0x073A
0733 1502 CP R16,R2
0734 0513 CPC R17,R3
0735 0524 CPC R18,R4
0736 F418 BCC 0x073A
0737 940E08C0 CALL swapacc
0739 CFF4 RJMP 0x072E
073A 31B8 CPI R27,0x18
073B F018 BCS 0x073F
073C 2422 CLR R2
073D 2433 CLR R3
073E 2444 CLR R4
073F 30B8 CPI R27,0x8
0740 F028 BCS 0x0746
0741 2C23 MOV R2,R3
0742 2C34 MOV R3,R4
0743 2444 CLR R4
0744 50B8 SUBI R27,0x8
0745 CFF9 RJMP 0x073F
0746 23BB TST R27
0747 F029 BEQ 0x074D
0748 9446 LSR R4
0749 9437 ROR R3
074A 9427 ROR R2
074B 95BA DEC R27
074C F7D9 BNE 0x0748
074D 2FB8 MOV R27,R24
074E 27BA EOR R27,R26
074F F04A BMI 0x0759
0750 D018 RCALL 0x0769
0751 F698 BCC 0x0725
0752 9527 ROR R18
0753 9517 ROR R17
0754 9507 ROR R16
0755 5F3F SUBI R19,0xFF
0756 F673 BVC 0x0725
0757 940C08AD JMP maxres
0759 D013 RCALL usub24
075A F411 BNE 0x075D
075B 940C08B4 JMP minres
075D F410 BCC 0x0760
075E 940E08A7 CALL negmant
0760 2322 TST R18
0761 F21A BMI 0x0725
0762 0F00 LSL R16
0763 1F11 ROL R17
0764 1F22 ROL R18
0765 5031 SUBI R19,1
0766 F7CB BVC 0x0760
0767 940C08AD JMP maxres
0769 0D02 ADD R16,R2
076A 1D13 ADC R17,R3
076B 1D24 ADC R18,R4
076C 9508 RET
usub24:
076D 1902 SUB R16,R2
076E 0913 SBC R17,R3
076F 0924 SBC R18,R4
0770 9508 RET
div32fs:
0771 D002 RCALL div32f
0772 940C05B6 JMP push_arg4
div32f:
0774 940E070D CALL float_prolog
0776 D023 RCALL FDIV
0777 940C0706 JMP float_epilog
0779 93BA ST R27,-Y
077A 24DD CLR R13
077B 24EE CLR R14
077C 24FF CLR R15
077D E1B8 LDI R27,0x18
077E 1502 CP R16,R2
077F 0513 CPC R17,R3
0780 0524 CPC R18,R4
0781 F028 BCS 0x0787
0782 1902 SUB R16,R2
0783 0913 SBC R17,R3
0784 0924 SBC R18,R4
0785 9408 BSET 0
0786 C001 RJMP 0x0788
0787 9488 BCLR 0
0788 1CDD ROL R13
0789 1CEE ROL R14
078A 1CFF ROL R15
078B 0F00 LSL R16
078C 1F11 ROL R17
078D 1F22 ROL R18
078E 95BA DEC R27
078F F771 BNE 0x077E
0790 2D0D MOV R16,R13
0791 2D1E MOV R17,R14
0792 2D2F MOV R18,R15
0793 91B9 LD R27,Y+
0794 9508 RET
fdiv10:
0795 2422 CLR R2
0796 2433 CLR R3
0797 E2B0 LDI R27,0x20
0798 2E4B MOV R4,R27
0799 E491 LDI R25,0x41
FDIV:
079A 2399 TST R25
079B F129 BEQ 0x07C1
079C 2333 TST R19
079D F151 BEQ 0x07C8
079E 940E08CC CALL unpack
07A0 F139 BEQ 0x07C8
07A1 278A EOR R24,R26
07A2 9408 BSET 0
07A3 0B39 SBC R19,R25
07A4 F0EB BVS 0x07C2
07A5 9446 LSR R4
07A6 9437 ROR R3
07A7 9427 ROR R2
07A8 9526 LSR R18
07A9 9517 ROR R17
07AA 9507 ROR R16
07AB DFCD RCALL 0x0779
07AC 2322 TST R18
07AD F02A BMI 0x07B3
07AE 0F00 LSL R16
07AF 1F11 ROL R17
07B0 1F22 ROL R18
07B1 5031 SUBI R19,1
07B2 F07B BVS 0x07C2
07B3 2FB0 MOV R27,R16
07B4 95B6 LSR R27
07B5 F048 BCS 0x07BF
07B6 2300 TST R16
07B7 F43A BPL 0x07BF
07B8 2311 TST R17
07B9 F42A BPL 0x07BF
07BA E0B1 LDI R27,1
07BB 0F0B ADD R16,R27
07BC 27BB CLR R27
07BD 1F1B ADC R17,R27
07BE 1F2B ADC R18,R27
07BF 940C08DE JMP repack
07C1 C006 RJMP 0x07C8
07C2 E7BF LDI R27,0x7F
07C3 2F3B MOV R19,R27
07C4 2B2B OR R18,R27
07C5 EF0F LDI R16,0xFF
07C6 EF1F LDI R17,0xFF
07C7 9508 RET
07C8 2700 CLR R16
07C9 2711 CLR R17
07CA 2722 CLR R18
07CB 2733 CLR R19
07CC 2788 CLR R24
07CD 9508 RET
cmp32f:
07CE 940E070D CALL float_prolog
07D0 D002 RCALL FLTCP
07D1 940C0706 JMP float_epilog
FLTCP:
07D3 D002 RCALL 0x07D6
07D4 23BB TST R27
07D5 9508 RET
07D6 2333 TST R19
07D7 F082 BMI 0x07E8
07D8 2399 TST R25
07D9 F042 BMI 0x07E2
07DA 1739 CP R19,R25
07DB F040 BCS 0x07E4
07DC F429 BNE 0x07E2
07DD 1502 CP R16,R2
07DE 0513 CPC R17,R3
07DF 0524 CPC R18,R4
07E0 F018 BCS 0x07E4
07E1 F021 BEQ 0x07E6
07E2 E0B1 LDI R27,1
07E3 9508 RET
07E4 EFBF LDI R27,0xFF
07E5 9508 RET
07E6 27BB CLR R27
07E7 9508 RET
07E8 2399 TST R25
07E9 F7D2 BPL 0x07E4
07EA 1739 CP R19,R25
07EB F3B0 BCS 0x07E2
07EC F7B9 BNE 0x07E4
07ED 1502 CP R16,R2
07EE 0513 CPC R17,R3
07EF 0524 CPC R18,R4
07F0 F388 BCS 0x07E2
07F1 F3A1 BEQ 0x07E6
07F2 CFF1 RJMP 0x07E4
07F3 E7BF LDI R27,0x7F
07F4 2F3B MOV R19,R27
07F5 2B2B OR R18,R27
07F6 EF0F LDI R16,0xFF
07F7 EF1F LDI R17,0xFF
07F8 9508 RET
07F9 2700 CLR R16
07FA 2711 CLR R17
07FB 2722 CLR R18
07FC 2733 CLR R19
07FD 2788 CLR R24
07FE 9508 RET
mpy32fs:
07FF D002 RCALL mpy32f
0800 940C05B6 JMP push_arg4
mpy32f:
0802 940E070D CALL float_prolog
0804 D002 RCALL FMUL
0805 940C0706 JMP float_epilog
FMUL:
0807 940E08CC CALL unpack
0809 F379 BEQ 0x07F9
080A 3890 CPI R25,0x80
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -