📄 log2_norm.asm
字号:
*****************************************************************************
** Description: log2_norm() in log2.c **
** **
** Inputs **
** **
** xar0---Word32 L_x **
** ar1 ---Word16 exp **
** Outputs: **
** ar2 ---word16 *exponent **
** ar3 ---word16 *fraction **
** **
** **
** Return value : **
** **
** Attribute : Cycles: 100 Pm: 57 **
** Modified Registers: all **
** **
** Programmer : xiewei **
*****************************************************************************
.ref log_table
.global _log2_norm
_log2_norm:
movl acc,@XAR0 ; if (L_x <= (Word32) 0)
;movl xar2,#0
;movl xar3,#2
sb _line_33,GT ;*exponent = 0;
;*fraction = 0;
mov ar2,#0
mov ar3,#0
LRETR
_line_33:
MOV AL,#30 ;*exponent = sub (30, exp);
SUB AL,@ar1
MOV ar2,al
MOVL ACC,@XAR0
MOVL @XAR4,ACC
MOV T,#9
ASRL ACC,T
MOVL @XAR0,ACC
MOVL ACC,@XAR4
SB _line_49,GEQ
NOT ACC
MOV T,#9
ASRL ACC,T
NOT ACC
MOVL @XAR0,ACC
_line_49:
MOVL ACC,@XAR0
MOV @ar4,AH
MOVL @XAR5,ACC
MOV T,#1
ASRL ACC,T
MOVL @XAR0,ACC
MOVL ACC,@XAR4
SB _line_63,GEQ
NOT ACC
MOV T,#1
ASRL ACC,T
NOT ACC
MOVL @XAR0,ACC
_line_63:
MOVL ACC,@XAR0
AND AL,#0x7fff
MOV @AR5,AL
MOV AL,@AR4
SUB AL,#32
MOV @AR4,AL
MOVL XAR6,#log_table
MOV AH,#0
ADDL @XAR6,ACC
MOV AH,*XAR6++
MOV AL,#0
MOVL @XAR7,ACC
SUB AH,*XAR6
MOV T,AH
SPM 1
MPY P,T,@AR5
MOVL ACC,@XAR7
SUBL ACC,P<<PM
MOV AR3,AH
LRETR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -