📄 q15tofloat.lst
字号:
C166 COMPILER V6.04, Q15TOFLOAT 09/04/2007 16:24:44 PAGE 1
C166 COMPILER V6.04, COMPILATION OF MODULE Q15TOFLOAT
OBJECT MODULE PLACED IN Q15toFloat.OBJ
COMPILER INVOKED BY: C:\Keil\C166\BIN\C166.EXE Q15toFloat.c MODV2 BROWSE MODV2 DEBUG
stmt lvl source
1 /******************************************************************************
2 ; Module: Q15toFloa
3 ; Filename: Q15toFloat.asm
4 ; Project: DSP library for XC166 microcontroller
5 ;------------------------------------------------------------------------------
6 ; Compiler: Keil
7 ;
8 ; Version: V1.2
9 ;
10 ; Description: Changign the Q15 format to IEEE floating format
11 ;
12 ; Date: May 2003
13 ;
14 ; Copyright: Infineon Technologies AG
15 ;*****************************************************************************/
16
17 /******************************************************************************
18 ; float Q15toFloat(DataS X);
19 ;
20 ; INPUTS:
21 ; X the input value in 1Q15 format
22 ;
23 ; RETURN:
24 ; Y the output value in floating format
25 ;
26 ; ALGORITHM: According to the IEEE-754 format
27 ;
28 ; REGISTER USAGE:
29 ; 1. From .c file to .asm file:
30 ; defined by compiler
31 ; 2. Output:
32 ; (R4)=mmmmmmmmmmmmmmmm
33 ; (R5)=seeeeeeeemmmmmmm (s:sign; e:exponent; m:mantissa)
34 ;
35 ; Assumption:
36 ;
37 ;*****************************************************************************/
38
39 #include "DspLib_Keil.h"
40
41 float Q15toFloat(DataS X)
42 {
43 1 __asm
44 1 {
45 1 MOV R1,X ;(R1)=X
46 1 //if X=0
47 1 CMP R1,#0
48 1 JMPR cc_NE,nozero
49 1 MOV R5,#0
50 1 MOV R4,#0
51 1 JMPR cc_UC,ende
52 1 nozero:
53 1 //if x=1
54 1 CMP R1,#7fffh
55 1 JMPR cc_NE,none
C166 COMPILER V6.04, Q15TOFLOAT 09/04/2007 16:24:44 PAGE 2
56 1 MOV R5,#3f7fh
57 1 MOV R4,#0ffffh
58 1 JMPR cc_UC,ende
59 1 none:
60 1 //get sign bit
61 1 MOV R2,R1 ;sign=(R2)=X in 1Q15
62 1 SHR R2,#0fh ;(R2)>>15
63 1 SHL R2,#0fh
64 1 //comput abs(x)
65 1 MOV MAH,R1 ;(ACC)=R1
66 1 CoABS
67 1 CoSTORE R1,MAS ;(R1)abs(x)
68 1 //compute exponent and mantissa
69 1 MOV R3,#1 ;initialize exp with 1, exp=(R3)
70 1 MOV R7,R1
71 1 MOV R6,R1 ;manti=(R6), initialize mantissa
72 1 loop1:
73 1 AND R7,#4000h ;look the most significant bit
74 1 JMPR cc_NZ,loop2
75 1 ADD R3,#1
76 1 SHL R6,#1
77 1 MOV R7,R6
78 1 JMPR cc_UC,loop1
79 1 loop2:
80 1 ADD R3,#1
81 1 SHL R6,#1
82 1 //build the floating output according to IEEE format
83 1 SUB R3,#127
84 1 NEG R3
85 1 SHL R3,#7
86 1 ADD R3,R2
87 1 MOV R7,R6 ;(R7)=manssi
88 1 SHR R7,#8
89 1 //first output
90 1 ADD R7,R3 ;building format for first register
91 1 MOV R5,R7 ;(R5)=sign + exponent
92 1 //second output
93 1 MOV R7,#0 ;output, (R4)=mantissa
94 1 SHL R6,#7
95 1 ADD R7,R6
96 1 MOV R4,R7
97 1
98 1 ende:
99 1 RET
100 1
101 1 }
102 1 }
103 //------------------- END OF FILE ----------------------------------------------
104
MODULE INFORMATION: INITIALIZED UNINITIALIZED
CODE SIZE = 100 --------
NEAR-CONST SIZE = -------- --------
FAR-CONST SIZE = -------- --------
HUGE-CONST SIZE = -------- --------
XHUGE-CONST SIZE = -------- --------
NEAR-DATA SIZE = -------- --------
FAR-DATA SIZE = -------- --------
XHUGE-DATA SIZE = -------- --------
IDATA-DATA SIZE = -------- --------
SDATA-DATA SIZE = -------- --------
C166 COMPILER V6.04, Q15TOFLOAT 09/04/2007 16:24:44 PAGE 3
BDATA-DATA SIZE = -------- --------
HUGE-DATA SIZE = -------- --------
BIT SIZE = -------- --------
INIT'L SIZE = -------- --------
END OF MODULE INFORMATION.
C166 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -