📄 gps_a_c.lib
字号:
; =============================================================================
;
; CREATED by eCOG Compiler/Linker - V1.6 (build 5179)
; DATE Wed Jul 18 14:08:45 2007
;
; COMMAND LINE : ecogcl -g -pack D:/GPS/software/GPS_A_C/cstartup -map
; D:/GPS/software/GPS_A_C/internal -DNDEBUG
; "-IC:/Program Files/Cyan Technology/CyanIDE/libraries/eCOG1k" -o
; D:/GPS/software/GPS_A_C/out/GPS_A_C -cmdfile
; D:/GPS/software/GPS_A_C/temp/files.tmp
;
; LBRARY FILES INCLUDED:
; C:/Program Files/Cyan Technology/CyanIDE/C/library\_printf.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__umh.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dfix.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dls.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dw.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__mwk.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dflt.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dsub.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dneg.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dmul.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__mh.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__mhI.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dadd.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\sqrt.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__ffltu.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__f2d.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__ddiv.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dfltu.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__urh.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__udh.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\atan.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\cos.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\sin.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__umwk.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__udw.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__nofpdi.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__vfprin.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__cond_disable_interrupts.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__cond_enable_interrupts.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\errno.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dgr.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dwc.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__fltdif.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__fltsum.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__huge_v.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dleq.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__d2f.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\fabs.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__sincos.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__udwc.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\strlen.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\isdigit.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__disable_interrupts.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__enable_interrupts.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dgeq.c
;
; =============================================================================
; generated by Norcroft eCOG C Compiler V1.10 $BuildRevision$
; special options: -g
;
MODULE qqtemp____printf
.CODE
.LARGE
; TARGET_MAX_STACK_OVERRUN = 8
;/*=============================================================================
;Cyan Technology Ltd
;eCOG C Library
;
;FILE _printf.c - non floating point printf
;
;DESCRIPTION
;The _printf function formats and outputs values and characters to the standard
;output under the control of the fmt string. It is identical to the standard
;printf function except that it does not support floating point output (%e,%E,
;%f,%g,%G) and therefore does not require any floating point library functions.
;
;The compiler automatically selects _printf in place of printf when the format
;string is a constant and there are no floating point conversion specifications.
;This avoids floating point functions being included in programs that do not
;require them.
;
;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 */
;
;#include "__lib.h"
;#include "stdio.h"
;#include "stdarg.h"
;
;int _printf(const char *fmt, ...)
;
$_printf:
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?32.1:
st AL,@(-1,Y)
st AH,@(-2,Y)
st XH,@(-4,Y)
st X,@(-3,Y)
st AL,@H'ffe1 ; %r0
st AH,@H'ffe0 ; %r0
Lstab?0c:
;{
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?33.1:
Lstab?1c:
; __IODESC io_op;
; va_list a;
; int n;
;
; va_start(a, fmt);
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?38.1:
; ^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?38.1:
; ^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?38.1:
add Y,#-11
Lstab?2a:
mov AL,Y
add AL,#9
add AL,#2
;
; io_op.is_string = 0;
st AL,@(4,Y) ; %r16 (a)
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?40.1:
ld AL,#0
st AL,@(0,Y) ; io_op
; io_op.d.output_fn = (&putchar);
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?41.1:
ld AL,#lwrd($putchar)
ld AH,#hwrd($putchar)
st AL,@(2,Y) ; io_op+2
st AH,@(1,Y) ; io_op+1
;
; n = __vfprin( &io_op, fmt, a, __nofpdi);
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?43.1:
ld AL,#lwrd($__nofpdi)
ld AH,#hwrd($__nofpdi)
st AL,@(-1,Y)
st AH,@(-2,Y)
ld AL,@(4,Y) ; %r16 (a)
st AL,@(-3,Y)
ld AL,@(10,Y) ; fmt+1
ld AH,@(9,Y) ; fmt
st AL,@(-4,Y)
st AH,@(-5,Y)
st Y,@H'ffe1 ; %r0
ld AH,@(-5,Y)
ld AL,@H'ffe1 ; %r0
add Y,#-4
Lstab?3a:
bsr $__vfprin
;
; va_end(a);
st AL,@(10,Y) ; %r17 (n)
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?45.1:
ld AL,#-256
;
; return (n);
st AL,@(8,Y) ; %r16 (a)
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?47.1:
ld AL,@(10,Y) ; %r17 (n)
add Y,#15
ld XH,@(-4,Y)
bra @(-3,Y)
Lstab?4c:
;
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?999999.1:
;}
;
;/* arch-tag: 3cae23ce-1328-40b9-88e0-e514d41c6691
; (do not change this comment) */
;
; .import $putchar
; .import $__nofpdi
; .import $__vfprin
;
; .export $_printf
;
;
.stabs "C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\library\\_printf.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\\include\\stdio.h",132,0,0,-1
.stabs "size_t:t35=4",128,0,0,0
.stabs "__va_list:t36=*1",128,0,0,0
.stabs "C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\include\\stdarg.h",132,0,0,-1
.stabs "va_list:t37=*1",128,0,0,0
.stabs "C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\library\\_printf.c",132,0,0,-1
.stabs "_printf:F1",36,0,33,$_printf
.stabs "fmt:p38=*2",160,0,0,-4
.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 "io_op:25",128,0,0,-22
.stabs "a:14",128,0,0,-14
.stabs "n:1",128,0,0,-10
.stabs "fmt:p38=*2",160,0,0,-4
.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 "io_op:25",128,0,0,0
.stabs "a:14",128,0,0,8
.stabs "n:1",128,0,0,12
.stabs "fmt:p38=*2",160,0,0,18
.stabs "!LR:3",128,0,0,14
.stabs "!SP:p1",160,0,0,22
.stabn 192,0,0,Lstab?2a
.stabn 224,0,0,Lstab?3a
.stabs "io_op:25",128,0,0,8
.stabs "a:14",128,0,0,16
.stabs "n:1",128,0,0,20
.stabs "fmt:p38=*2",160,0,0,26
.stabs "!LR:3",128,0,0,22
.stabs "!SP:p1",160,0,0,30
.stabn 192,0,0,Lstab?3a
.stabn 224,0,0,Lstab?4c
;
ENDMOD
MODULE __umh
.CODE
.ALL
$__umh:
;; 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)
umult @(0,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_____dfix
.CODE
.LARGE
; TARGET_MAX_STACK_OVERRUN = 8
;/*=============================================================================
;Cyan Technology Ltd
;eCOG C Library
;
;FILE __dfix.c - software implementation of fp cast double->long
;
;DESCRIPTION
;This converts double representations of numbers to longint. If the number
;overflows then it sets errno to ERANGE and returns LONG_MAX;
;
;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 __dfixX
;#include "__lib.h"
;#include "errno.h"
;#include "limits.h"
;
;int32 __dfix(unsigned32 ah, unsigned32 al)
;
$__dfix:
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?26.1:
st AL,@(-1,Y)
st AH,@(-2,Y)
st XH,@(-4,Y)
st X,@(-3,Y)
st AL,@H'ffe5 ; %r2 (ah)
st AH,@H'ffe4 ; %r2 (ah)
Lstab?0c:
;{
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?27.1:
Lstab?1c:
; int sign, ax;
;
; sign = (ah & 0x80000000) ? 1 : 0;
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?30.1:
add Y,#-4
Lstab?2a:
ld AL,@H'ffe5 ; %r2 (ah)
ld AH,@H'ffe4 ; %r2 (ah)
ld AL,#0
and AH,#-32768
beq ?L5F1
; ^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?30.1:
ld AL,#1
bra ?L4F1
?L5F1:
; ^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?30.1:
ld AL,#0
?L4F1:
;
; ax = (int)(ah >> 20) & 0x7ff;
st AL,@H'ffe9 ; %r4 (sign)
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?32.1:
ld AH,#0
ld AL,@H'ffe4 ; %r2 (ah)
asr #4
and AL,#2047
; ah = (ah & 0x000fffff) | 0x00100000;
st AL,@H'ffe7 ; %r3 (ax)
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?33.1:
ld AL,@H'ffe5 ; %r2 (ah)
ld AH,@H'ffe4 ; %r2 (ah)
and AH,#15
or AH,#16
;
; /* @@@ beware: should next line be 0x3fe as in mip/ieeeflt.c? */
; if (ax < 0x3ff) /* arg < 1.0 ... result 0 */
st AL,@H'ffe5 ; %r2 (ah)
st AH,@H'ffe4 ; %r2 (ah)
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?36.1:
ld AH,@H'ffe7 ; %r3 (ax)
cmp AH,#1023
blt ?L44F1
bra ?L7F1
?L44F1:
; {
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?37.1:
; al = 0;
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?38.1:
ld AH,#0
ld AL,#0
st AL,@(5,Y) ; %r35 (al)
st AH,@(4,Y) ; %r35 (al)
bra ?L36F1
?L7F1:
; }
; else if (ax > (0x400 + 51)) /* overflow */
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?40.1:
ld AH,@H'ffe7 ; %r3 (ax)
cmp AH,#1076
blt ?L12F1
; {
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?41.1:
; errno = ERANGE;
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?42.1:
ld AL,#34
st AL,@$errno
; al = LONG_MAX;
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?43.1:
ld AH,#32767
ld AL,#-1
st AL,@(5,Y) ; %r35 (al)
st AH,@(4,Y) ; %r35 (al)
bra ?L36F1
?L12F1:
; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -