📄 gps_a_c.lib
字号:
; generated by Norcroft eCOG C Compiler V1.10 $BuildRevision$
; special options: -g
;
MODULE qqtemp_____dneg
.CODE
.LARGE
; TARGET_MAX_STACK_OVERRUN = 8
;/*=============================================================================
;Cyan Technology Ltd
;eCOG C Library
;
;FILE __dneg.c - software implementation of fp double precision negate
;
;DESCRIPTION
;Negates a double precision number.
;
;MODIFICATION DETAILS
;01/NOV/2001 Karl Swepson Taken from CCLs XAP2 Library.
;26/OCT/2004 Andy Cromarty Improved legibility, removed all while(1) loops
; and added assert statements for debugging
;=============================================================================*/
;
;/* Copyright (C) Codemist Ltd, 1988 */
;/* Copyright (C) Cambridge Consultants Ltd, 1995 */
;/* Copyright (C) Cyan Technology Ltd, 2001, 2004 */
;
;#define __dnegX
;#include "__lib.h"
;
;double __dneg(int32 bh, int32 bl)
;
$__dneg:
^qqtemp_____dneg.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dneg.c'.?23.1:
st AL,@(-2,Y)
st AH,@(-1,Y)
st XH,@(-4,Y)
st X,@(-3,Y)
st AL,@H'ffe5 ; %r2 (__struct_result)
Lstab?0c:
;{
^qqtemp_____dneg.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dneg.c'.?24.1:
Lstab?1c:
; dblrep a;
;
; return (i2dbl_(a, bh ^ 0x80000000, bl));
^qqtemp_____dneg.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dneg.c'.?27.1:
ld AL,@(0,Y) ; %r34 (bh)
ld AH,@(-1,Y) ; %r34 (bh)
xor AH,#-32768
st AL,@(-7,Y) ; a+1
st AH,@(-8,Y) ; a
; ^qqtemp_____dneg.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dneg.c'.?27.1:
ld AL,@(2,Y) ; %r36 (bl)
ld AH,@(1,Y) ; %r36 (bl)
st AL,@(-5,Y) ; a+3
st AH,@(-6,Y) ; a+2
mov AL,Y
add AL,#-8
st Y,@H'fffe
ld Y,@H'ffe5 ; %r2 (__struct_result)
st AL,@H'ffe7 ; %r3
ld X,@H'ffe7 ; %r3
ld AH,@(3,X)
st AH,@(3,Y)
ld AH,@(2,X)
st AH,@(2,Y)
ld AH,@(1,X)
st AH,@(1,Y)
ld AH,@(0,X)
st AH,@(0,Y)
ld Y,@H'fffe
ld AH,#0
st AH,@H'fffe
ld XH,@(-4,Y)
bra @(-3,Y)
Lstab?2c:
;
^qqtemp_____dneg.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dneg.c'.?999999.1:
;}
;
;
;/* arch-tag: 69c95a3e-2792-4cf5-9ac0-754b9e2ff769
; (do not change this comment) */
;
; .export $__dneg
;
.stabs "C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\library\\__dneg.c",100,0,0,0
.stabs "int:t1=r1;-32768;32767;",128,0,0,0
.stabs "char:t2=r2;0;127;",128,0,0,0
.stabs "long int:t3=r1;-2147483648;2147483647;",128,0,0,0
.stabs "unsigned int:t4=r1;0;65535;",128,0,0,0
.stabs "unsigned long int:t5=r1;0;-1;",128,0,0,0
.stabs "short int:t6=r1;-32768;32767;",128,0,0,0
.stabs "unsigned short int:t7=r1;0;65535;",128,0,0,0
.stabs "signed char:t8=r1;-128;127;",128,0,0,0
.stabs "unsigned char:t9=r1;0;255;",128,0,0,0
.stabs "float:t10=r1;4;0;",128,0,0,0
.stabs "double:t11=r1;8;0;",128,0,0,0
.stabs "long double:t12=r1;8;0;",128,0,0,0
.stabs "void:t13=13",128,0,0,0
.stabs "C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\include\\__lib.h",132,0,0,-1
.stabs "_va_list:t14=*1",128,0,0,0
.stabs "fp_number:t17=15=u8i:16=s8sxmhi:5,0,32;mlo:5,32,32;;,0,64;d:11,0,64;;",128,0,0,0
.stabs "dblrep:T18=u8d:11,0,64;ua:19=ar1;0;1;5,0,64;;",128,0,0,0
.stabs "dblrep:t20=18",128,0,0,0
.stabs "__remain:G5",32,0,0,0
.stabs "__rndnxt:G5",32,0,0,0
.stabs "BlockStruct:T21=s6flag:22,0,16;size:1,16,16;cdr:23=*21,32,16;;",128,0,0,0
.stabs " :T22=eBLKFREE:4660,BLKACTIVE:22136,;",128,0,0,0
.stabs "BlockStruct:t24=21",128,0,0,0
.stabs "__huge_v:G11",32,0,0,0
.stabs "__huge_f:G10",32,0,0,0
.stabs "__IODESC:t32=25=s6is_string:1,0,16;d:26=u4string:27=*2,0,32;output_fn:28=*29=f1,0,32;input_fn:30=*31=f1,0,32;;,16,32;;",128,0,0,0
.stabs "fp_print_t:t33=f1",128,0,0,0
.stabs "__ungot:G1",32,0,0,0
.stabs "fp_scan_t:t34=f3",128,0,0,0
.stabs "C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\library\\__dneg.c",132,0,0,-1
.stabs "__dneg:F11",36,0,24,$__dneg
.stabs "__struct_result:r35=*11",64,0,0,2
.stabs "bh:p3",160,0,0,-2
.stabs "bl:p3",160,0,0,2
.stabs "!LR:3",128,0,0,-8
.stabs "!SP:p1",160,0,0,0
.stabn 192,0,0,Lstab?0c
.stabn 224,0,0,Lstab?1c
.stabs "a:18",128,0,0,-16
.stabs "__struct_result:r35=*11",64,0,0,2
.stabs "bh:p3",160,0,0,-2
.stabs "bl:p3",160,0,0,2
.stabs "!LR:3",128,0,0,-8
.stabs "!SP:p1",160,0,0,0
.stabn 192,0,0,Lstab?1c
.stabn 224,0,0,Lstab?2c
;
ENDMOD
; generated by Norcroft eCOG C Compiler V1.10 $BuildRevision$
; special options: -g
;
MODULE qqtemp_____dmul
.CODE
.LARGE
; TARGET_MAX_STACK_OVERRUN = 8
;/*=============================================================================
;Cyan Technology Ltd
;eCOG C Library
;
;FILE __dmul.c - software implementation of fp double precision multiply
;
;DESCRIPTION
;Performs a floating point multiply of one double by another. If an overflow occurs
;then it sets errno to ERANGE and returns HUGE_VAL.
;
;MODIFICATION DETAILS
;01/NOV/2001 Karl Swepson Taken from CCLs XAP2 Library.
;26/OCT/2004 Andy Cromarty Improved legibility, removed all while(1) loops
; and added assert statements for debugging
;=============================================================================*/
;
;/* Copyright (C) Codemist Ltd, 1988 */
;/* Copyright (C) Cambridge Consultants Ltd, 1995 */
;/* Copyright (C) Cyan Technology Ltd, 2001, 2004 */
;
;#define __dmulX
;#include "__lib.h"
;#include "errno.h"
;#include "math.h"
;
;double __dmul(unsigned32 bh, unsigned32 bl, unsigned32 ch, unsigned32 cl)
;
$__dmul:
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?26.1:
add Y,#-24
Lstab?0a:
st AL,@(22,Y)
st AH,@(23,Y)
st XH,@(20,Y)
st X,@(21,Y)
st AL,@(1,Y) ; %r16 (__struct_result)
Lstab?1c:
;{
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?27.1:
Lstab?2c:
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?33.1:
ld AL,@(24,Y) ; %r34 (bh)
ld AH,@(23,Y) ; %r34 (bh)
xor AL,@(28,Y) ; %r38 (ch)
xor AH,@(27,Y) ; %r38 (ch)
ld AL,#0
and AH,#-32768
st AL,@(15,Y) ; %r23 (as)
st AH,@(14,Y) ; %r23 (as)
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?35.1:
ld AH,#0
ld AL,@(23,Y) ; %r34 (bh)
asr #4
and AL,#2047
st AL,@(19,Y) ; %r25 (bx)
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?36.1:
ld AH,#0
ld AL,@(27,Y) ; %r38 (ch)
asr #4
and AL,#2047
; dblrep a;
; double r;
; unsigned32 ah, al, carry;
; unsigned32 aa[7], bb[4], cc[4];
; int i, j;
; int32 as = (bh ^ ch) & 0x80000000; /* sign for result */
; int ax;
; int bx = (int)(bh >> 20) & 0x7ff;
; int cx = (int)(ch >> 20) & 0x7ff;
;
; if ((bx == 0) || (cx == 0))
st AL,@(17,Y) ; %r24 (cx)
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?38.1:
add Y,#-38
Lstab?3a:
ld AH,@(57,Y) ; %r25 (bx)
beq ?L5F1
; ^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?38.1:
ld AH,@(55,Y) ; %r24 (cx)
bne ?L4F1
?L5F1:
; {
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?39.1:
; /* multiplication by 0.0 or subnormal value */
; /* note sign is preserved */
; r = i2dbl_(a, as, 0);
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?42.1:
ld AL,@(53,Y) ; %r23 (as)
ld AH,@(52,Y) ; %r23 (as)
st AL,@(35,Y) ; a+1
st AH,@(34,Y) ; a
; ^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?42.1:
ld AH,#0
ld AL,#0
st AL,@(37,Y) ; a+3
st AH,@(36,Y) ; a+2
mov AL,Y
add AL,#34
st AL,@H'ffe5 ; %r2 (w)
ld X,@H'ffe5 ; %r2 (w)
ld AH,@(3,X)
st AH,@(33,Y) ; r+3
ld AH,@(2,X)
st AH,@(32,Y) ; r+2
ld AH,@(1,X)
st AH,@(31,Y) ; r+1
ld AH,@(0,X)
st AH,@(30,Y) ; r
bra ?L69F1
?L4F1:
; }
; else
; {
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?45.1:
; bh = (bh & 0xfffff) | 0x100000;
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?46.1:
ld AL,@(62,Y) ; %r34 (bh)
ld AH,@(61,Y) ; %r34 (bh)
and AH,#15
or AH,#16
; ch = (ch & 0xfffff) | 0x100000;
st AL,@(62,Y) ; %r34 (bh)
st AH,@(61,Y) ; %r34 (bh)
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?47.1:
ld AL,@(66,Y) ; %r38 (ch)
ld AH,@(65,Y) ; %r38 (ch)
and AH,#15
or AH,#16
;
; /* I split the operands into 14-bit chunks and do a long multiplication. */
; /* As coded here I put more effort than might really be needed into the */
; /* low order bits of the product, but for now I am more concerned with */
; /* ease of coding and accuracy of results than with absolute speed. */
; bb[0] = bh >> 7;
st AL,@(66,Y) ; %r38 (ch)
st AH,@(65,Y) ; %r38 (ch)
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?53.1:
ld AL,@(62,Y) ; %r34 (bh)
ld AH,@(61,Y) ; %r34 (bh)
lsr #7
st AL,@(9,Y) ; bb+1
st AH,@(8,Y) ; bb
; bb[1] = ((bh & 0x7f) << 7) | (bl >> 25);
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?54.1:
ld AL,@(62,Y) ; %r34 (bh)
ld AH,@(61,Y) ; %r34 (bh)
ld AH,#0
and AL,#127
asl #7
st AL,@H'ffe5 ; %r2 (w)
st AH,@H'ffe4 ; %r2 (w)
ld AH,#0
ld AL,@(63,Y) ; %r36 (bl)
asr #9
or AL,@H'ffe5 ; %r2 (w)
or AH,@H'ffe4 ; %r2 (w)
st AL,@(11,Y) ; bb+3
st AH,@(10,Y) ; bb+2
; bb[2] = (bl >> 11) & ~0x003fc000;
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?55.1:
ld AL,@(64,Y) ; %r36 (bl)
ld AH,@(63,Y) ; %r36 (bl)
lsr #11
and AL,#16383
and AH,#-64
st AL,@(13,Y) ; bb+5
st AH,@(12,Y) ; bb+4
; bb[3] = (bl << 3) & 0x3fff;
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?56.1:
ld AL,@(64,Y) ; %r36 (bl)
ld AH,@(63,Y) ; %r36 (bl)
asl #3
ld AH,#0
and AL,#16383
st AL,@(15,Y) ; bb+7
st AH,@(14,Y) ; bb+6
;
; cc[0] = ch >> 7;
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?58.1:
ld AL,@(66,Y) ; %r38 (ch)
ld AH,@(65,Y) ; %r38 (ch)
lsr #7
st AL,@(1,Y) ; cc+1
st AH,@(0,Y) ; cc
; cc[1] = ((ch & 0x7f) << 7) | (cl >> 25);
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?59.1:
ld AL,@(66,Y) ; %r38 (ch)
ld AH,@(65,Y) ; %r38 (ch)
ld AH,#0
and AL,#127
asl #7
st AL,@H'ffe5 ; %r2 (w)
st AH,@H'ffe4 ; %r2 (w)
ld AH,#0
ld AL,@(67,Y) ; %r40 (cl)
asr #9
or AL,@H'ffe5 ; %r2 (w)
or AH,@H'ffe4 ; %r2 (w)
st AL,@(3,Y) ; cc+3
st AH,@(2,Y) ; cc+2
; cc[2] = (cl >> 11) & ~0x003fc000;
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?60.1:
ld AL,@(68,Y) ; %r40 (cl)
ld AH,@(67,Y) ; %r40 (cl)
lsr #11
and AL,#16383
and AH,#-64
st AL,@(5,Y) ; cc+5
st AH,@(4,Y) ; cc+4
; cc[3] = (cl << 3) & 0x3fff;
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?61.1:
ld AL,@(68,Y) ; %r40 (cl)
ld AH,@(67,Y) ; %r40 (cl)
asl #3
ld AH,#0
and AL,#16383
st AL,@(7,Y) ; cc+7
st AH,@(6,Y) ; cc+6
;
; for (i=0; i<= 6; i++)
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?63.1:
ld AL,#0
st AL,@(41,Y) ; %r17 (i)
?L13F1:
; ^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?63.1:
ld AH,@(41,Y) ; %r17 (i)
cmp AH,#7
blt ?L12F1
bra ?L15F1
?L14F1:
; ^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?63.1:
; ^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?63.1:
ld AL,@(41,Y) ; %r17 (i)
add AL,#1
st AL,@(41,Y) ; %r17 (i)
bra ?L13F1
?L12F1:
; aa[i] = 0;
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?64.1:
ld AH,#0
ld AL,#0
st AL,@H'ffe5 ; %r2 (w)
st AH,@H'ffe4 ; %r2 (w)
ld AL,@(41,Y) ; %r17 (i)
asl #1
st Y,@H'ffe1 ; %r0
st AL,@H'ffe7 ; %r3
ld X,@H'ffe7 ; %r3
add X,@H'ffe1 ; %r0
ld AL,@H'ffe5 ; %r2 (w)
ld AH,@H'ffe4 ; %r2 (w)
st AL,@(17,X) ; aa+1
st AH,@(16,X) ; aa
bra ?L14F1
?L15F1:
;
; for (i=0; i<4; i++)
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?66.1:
ld AL,#0
st AL,@(41,Y) ; %r17 (i)
?L18F1:
; ^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?66.1:
ld AH,@(41,Y) ; %r17 (i)
cmp AH,#4
blt ?L17F1
bra ?L20F1
?L19F1:
; ^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?66.1:
; ^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?66.1:
ld AL,@(41,Y) ; %r17 (i)
add AL,#1
st AL,@(41,Y) ; %r17 (i)
bra ?L18F1
?L17F1:
; {
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?67.1:
; for (j=0; j<4; j++)
^qqtemp_____dmul.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dmul.c'.?68.1:
ld AL,#0
st AL,@(47,Y) ; %r20 (j)
?L24F1:
; ^qqtemp_____dmul.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -