📄 gps_a_c.lib
字号:
.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\\__dw.c",132,0,0,-1
.stabs "__dw:F3",36,0,14,$__dw
.stabs "a1:p3",160,0,0,-12
.stabs "a2:p3",160,0,0,0
.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 "r:3",128,0,0,-16
.stabs "a1:p3",160,0,0,-12
.stabs "a2:p3",160,0,0,0
.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?2a
.stabs "r:3",128,0,0,2
.stabs "a1:p3",160,0,0,6
.stabs "a2:p3",160,0,0,18
.stabs "!LR:3",128,0,0,10
.stabs "!SP:p1",160,0,0,18
.stabn 192,0,0,Lstab?2a
.stabn 224,0,0,Lstab?3a
.stabs "r:3",128,0,0,6
.stabs "a1:p3",160,0,0,10
.stabs "a2:p3",160,0,0,22
.stabs "!LR:3",128,0,0,14
.stabs "!SP:p1",160,0,0,22
.stabn 192,0,0,Lstab?3a
.stabn 224,0,0,Lstab?4c
;
ENDMOD
MODULE __mwk
.CODE
.ALL
$__mwk:
;; save return address
st XH,@(-1,Y)
st X,@(-2,Y)
;; save arguments
st AL,@(-3,Y)
st AH,@(-4,Y)
;; conditionally disable interrupts
sub Y,#4 ; NOTE: Stack pointer adjusted
bsr $__cond_disable_interrupts
st AL,@(-1,Y)
;; ensure emi is not active before starting the multiplication
;; this works around a bug in ecog1k
L1: ld AH,@H'ff7a ; emi.ctrl_sts
and AH,#H'12
bne L1
;; multiply
ld AL,@(1,Y)
smult @(4,Y)
st AL,@(-2,Y)
ld AL,@(5,Y)
smult @(0,Y)
add AL,@(-2,Y)
st AL,@(-2,Y)
ld AL,@(1,Y)
umult @(5,Y)
add AH,@(-2,Y)
;; save result
st AL,@(1,Y)
st AH,@(0,Y)
;; conditionally enable interrupts
ld AL,@(-1,Y) ; NOTE: Don't adjust stack pointer
bsr $__cond_enable_interrupts
add Y,#4 ; NOTE: Stack pointer adjusted
;; load result
ld AL,@(-3,Y)
ld AH,@(-4,Y)
;; return
ld XH,@(-1,Y)
bra @(-2,Y)
ENDMOD
; generated by Norcroft eCOG C Compiler V1.10 $BuildRevision$
; special options: -g
;
MODULE qqtemp_____dflt
.CODE
.LARGE
; TARGET_MAX_STACK_OVERRUN = 8
;/*=============================================================================
;Cyan Technology Ltd
;eCOG C Library
;
;FILE __dflt.c - software implementation of fp cast long->double
;
;DESCRIPTION
;This converts long integer representations of numbers to double.
;
;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 __dfltX
;#include "__lib.h"
;
;double __dflt(int32 n)
;
$__dflt:
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.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_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?24.1:
Lstab?1c:
; unsigned32 ah, al;
; dblrep a;
; double r;
; int32 as;
; int ax;
;
; if (n == 0)
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?31.1:
add Y,#-12
Lstab?2a:
ld AH,@(11,Y) ; %r34 (n)
or AH,@(12,Y) ; %r34 (n)
bne ?L4F1
; {
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?32.1:
; r = i2dbl_(a, 0, 0);
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?33.1:
ld AH,#0
ld AL,#0
st AL,@(5,Y) ; a+1
st AH,@(4,Y) ; a
; ^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?33.1:
st AL,@(7,Y) ; a+3
st AH,@(6,Y) ; a+2
mov AL,Y
add AL,#4
st AL,@H'ffef ; %r7
ld X,@H'ffef ; %r7
ld AH,@(3,X)
st AH,@(3,Y) ; r+3
ld AH,@(2,X)
st AH,@(2,Y) ; r+2
ld AH,@(1,X)
st AH,@(1,Y) ; r+1
ld AH,@(0,X)
st AH,@(0,Y) ; r
bra ?L8F1
?L4F1:
; }
; else
; {
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?36.1:
; if (n > 0)
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?37.1:
ld AL,@(12,Y) ; %r34 (n)
ld AH,@(11,Y) ; %r34 (n)
cmp AL,#1
subc AH,#0
blt ?L10F1
; {
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?38.1:
; as = 0;
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?39.1:
ld AH,#0
ld AL,#0
st AL,@H'ffed ; %r6 (as)
st AH,@H'ffec ; %r6 (as)
bra ?L14F1
?L10F1:
; }
; else
; {
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?42.1:
; as = 0x80000000;
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?43.1:
ld AH,#-32768
ld AL,#0
; n = -n; /* from here on n is thought of as unsigned */
st AL,@H'ffed ; %r6 (as)
st AH,@H'ffec ; %r6 (as)
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?44.1:
ld AL,@(12,Y) ; %r34 (n)
ld AH,@(11,Y) ; %r34 (n)
xor AH,#-1
nadd AL,#0
addc AH,#0
st AL,@(12,Y) ; %r34 (n)
st AH,@(11,Y) ; %r34 (n)
?L14F1:
; }
; ah = 0;
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?46.1:
ld AH,#0
ld AL,#0
; al = n;
st AL,@H'ffe9 ; %r4 (ah)
st AH,@H'ffe8 ; %r4 (ah)
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?47.1:
ld AL,@(12,Y) ; %r34 (n)
ld AH,@(11,Y) ; %r34 (n)
; ax = 0x400 + 51;
st AL,@H'ffe7 ; %r3 (al)
st AH,@H'ffe6 ; %r3 (al)
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?48.1:
ld AL,#1075
; while ((ah & 0x00100000) == 0)
st AL,@H'ffeb ; %r5 (ax)
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?49.1:
?L18F1:
; ^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?49.1:
ld AL,@H'ffe9 ; %r4 (ah)
ld AH,@H'ffe8 ; %r4 (ah)
ld AL,#0
and AH,#16
bne ?L19F1
; {
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?50.1:
; ah = (ah << 1) | (al >> 31);
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?51.1:
ld AL,@H'ffe9 ; %r4 (ah)
ld AH,@H'ffe8 ; %r4 (ah)
asl #1
st AL,@H'ffef ; %r7
st AH,@H'ffee ; %r7
ld AH,#0
ld AL,@H'ffe6 ; %r3 (al)
asr #15
or AL,@H'ffef ; %r7
or AH,@H'ffee ; %r7
; al = al << 1;
st AL,@H'ffe9 ; %r4 (ah)
st AH,@H'ffe8 ; %r4 (ah)
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?52.1:
ld AL,@H'ffe7 ; %r3 (al)
ld AH,@H'ffe6 ; %r3 (al)
asl #1
; ax -= 1;
st AL,@H'ffe7 ; %r3 (al)
st AH,@H'ffe6 ; %r3 (al)
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?53.1:
ld AL,@H'ffeb ; %r5 (ax)
sub AL,#1
st AL,@H'ffeb ; %r5 (ax)
bra ?L18F1
?L19F1:
; }
;
; r = i2dbl_(a, (ah & ~0x00100000) | ((int32)ax << 20) | as, al);
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?56.1:
ld AL,@H'ffe9 ; %r4 (ah)
ld AH,@H'ffe8 ; %r4 (ah)
and AH,#-17
st AL,@H'ffef ; %r7
st AH,@H'ffee ; %r7
ld AL,@H'ffeb ; %r5 (ax)
asl #20
or AL,@H'ffef ; %r7
or AH,@H'ffee ; %r7
or AL,@H'ffed ; %r6 (as)
or AH,@H'ffec ; %r6 (as)
st AL,@(5,Y) ; a+1
st AH,@(4,Y) ; a
; ^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?56.1:
ld AL,@H'ffe7 ; %r3 (al)
ld AH,@H'ffe6 ; %r3 (al)
st AL,@(7,Y) ; a+3
st AH,@(6,Y) ; a+2
mov AL,Y
add AL,#4
st AL,@H'ffe1 ; %r0
ld X,@H'ffe1 ; %r0
ld AH,@(3,X)
st AH,@(3,Y) ; r+3
ld AH,@(2,X)
st AH,@(2,Y) ; r+2
ld AH,@(1,X)
st AH,@(1,Y) ; r+1
ld AH,@(0,X)
st AH,@(0,Y) ; r
?L8F1:
; }
;
; return (r);
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?59.1:
st Y,@H'ffef ; %r7
st Y,@H'fffe
ld Y,@H'ffe5 ; %r2 (__struct_result)
ld X,@H'ffef ; %r7
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
add Y,#12
ld XH,@(-4,Y)
bra @(-3,Y)
Lstab?3c:
;
^qqtemp_____dflt.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dflt.c'.?999999.1:
;}
;
;/* arch-tag: d2ec2b4b-f1e2-4512-99d4-8fce4d9dd20b
; (do not change this comment) */
;
; .export $__dflt
;
.stabs "C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\library\\__dflt.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\\__dflt.c",132,0,0,-1
.stabs "__dflt:F11",36,0,24,$__dflt
.stabs "__struct_result:r35=*11",64,0,0,2
.stabs "n: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 "ah:r5",64,0,0,4
.stabs "al:r5",64,0,0,3
.stabs "a:18",128,0,0,-16
.stabs "r:11",128,0,0,-24
.stabs "as:r3",64,0,0,6
.stabs "ax:r1",64,0,0,5
.stabs "__struct_result:r35=*11",64,0,0,2
.stabs "n: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?2a
.stabs "ah:r5",64,0,0,4
.stabs "al:r5",64,0,0,3
.stabs "a:18",128,0,0,8
.stabs "r:11",128,0,0,0
.stabs "as:r3",64,0,0,6
.stabs "ax:r1",64,0,0,5
.stabs "__struct_result:r35=*11",64,0,0,2
.stabs "n:p3",160,0,0,22
.stabs "!LR:3",128,0,0,16
.stabs "!SP:p1",160,0,0,24
.stabn 192,0,0,Lstab?2a
.stabn 224,0,0,Lstab?3c
;
ENDMOD
; generated by Norcroft eCOG C Compiler V1.10 $BuildRevision$
; special options: -g
;
MODULE qqtemp_____dsub
.CODE
.LARGE
; TARGET_MAX_STACK_OVERRUN = 8
;/*=============================================================================
;Cyan Technology Ltd
;eCOG C Library
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -