Initial revision
[fw/sdcc] / device / lib / small / _strcmp.asm
1 ;--------------------------------------------------------
2 ; File Created by SDCC : FreeWare ANSI-C Compiler
3 ; Version 2.1.9Ga Sun Jan 16 17:31:16 2000
4
5 ;--------------------------------------------------------
6         .module _strcmp
7 ;--------------------------------------------------------
8 ; publics variables in this module
9 ;--------------------------------------------------------
10         .globl _strcmp_PARM_2
11         .globl _strcmp
12 ;--------------------------------------------------------
13 ; special function registers
14 ;--------------------------------------------------------
15 ;--------------------------------------------------------
16 ; special function bits 
17 ;--------------------------------------------------------
18 ;--------------------------------------------------------
19 ; internal ram data
20 ;--------------------------------------------------------
21         .area   DSEG    (DATA)
22 ;--------------------------------------------------------
23 ; overlayable items in internal ram 
24 ;--------------------------------------------------------
25         .area _DUMMY
26         .area   OSEG    (OVR,DATA)
27 _strcmp_PARM_2:
28         .ds     0x0003
29 _strcmp_ret_1_1:
30         .ds     0x0002
31 ;--------------------------------------------------------
32 ; indirectly addressable internal ram data
33 ;--------------------------------------------------------
34         .area   ISEG    (DATA)
35 ;--------------------------------------------------------
36 ; bit data
37 ;--------------------------------------------------------
38         .area   BSEG    (BIT)
39 ;--------------------------------------------------------
40 ; external ram data
41 ;--------------------------------------------------------
42         .area   XSEG    (XDATA)
43 ;--------------------------------------------------------
44 ; global & static initialisations
45 ;--------------------------------------------------------
46         .area GSINIT (CODE)
47 ;--------------------------------------------------------
48 ; code
49 ;--------------------------------------------------------
50         .area CSEG (CODE)
51         G$strcmp$0$0 ==.
52 ;       _strcmp.c 27
53 ;       -----------------------------------------
54 ;        function strcmp
55 ;       -----------------------------------------
56 _strcmp:
57         ar2 = 0x02
58         ar3 = 0x03
59         ar4 = 0x04
60         ar5 = 0x05
61         ar6 = 0x06
62         ar7 = 0x07
63         ar0 = 0x00
64         ar1 = 0x01
65 ;       _strcmp.c 42
66         mov     r2,dpl
67         mov     r3,dph
68         mov     r4,b
69 ;       _strcmp.c 34
70         mov     r5,_strcmp_PARM_2
71         mov     r6,(_strcmp_PARM_2 + 1)
72         mov     r7,(_strcmp_PARM_2 + 2)
73 00102$:
74         mov     dpl,r5
75         mov     dph,r6
76         mov     b,r7
77         lcall   __gptrget
78         mov     r0,a
79         mov     dpl,r2
80         mov     dph,r3
81         mov     b,r4
82         lcall   __gptrget
83 ; Peephole 106   removed redundant mov 
84         mov  r1,a
85         clr  c
86         subb    a,r0
87 ; Peephole 166   removed redundant mov
88         mov  r1,a
89         mov  _strcmp_ret_1_1,r1 
90         rlc     a
91         subb    a,acc
92         mov     (_strcmp_ret_1_1 + 1),a
93         mov     a,r1
94 ; Peephole 109   removed ljmp by inverse jump logic
95         jnz  00104$
96 00117$:
97         mov     a,r0
98 ; Peephole 110   removed ljmp by inverse jump logic
99         jz  00104$
100 00118$:
101 ;       _strcmp.c 35
102         inc     r2
103         cjne    r2,#0x00,00119$
104         inc     r3
105 00119$:
106         inc     r5
107         cjne    r5,#0x00,00120$
108         inc     r6
109 00120$:
110 ; Peephole 132   changed ljmp to sjmp
111         sjmp 00102$
112 00104$:
113 ;       _strcmp.c 37
114         mov     a,(_strcmp_ret_1_1 + 1)
115 ; Peephole 111   removed ljmp by inverse jump logic
116         jnb  acc.7,00108$
117 00121$:
118 ;       _strcmp.c 38
119         mov     _strcmp_ret_1_1,#0xff
120         mov     (_strcmp_ret_1_1 + 1),#0xff
121 ; Peephole 132   changed ljmp to sjmp
122         sjmp 00109$
123 00108$:
124 ;       _strcmp.c 39
125         clr     c
126 ; Peephole 180   changed mov to clr
127         clr  a
128         subb    a,_strcmp_ret_1_1
129 ; Peephole 159   avoided xrl during execution
130         mov  a,#(0x00 ^ 0x80)
131         mov     b,(_strcmp_ret_1_1 + 1)
132         xrl     b,#0x80
133         subb    a,b
134 ; Peephole 108   removed ljmp by inverse jump logic
135         jnc  00109$
136 00122$:
137 ;       _strcmp.c 40
138         clr     a
139         mov     (_strcmp_ret_1_1 + 1),a
140         mov     _strcmp_ret_1_1,#0x01
141 00109$:
142 ;       _strcmp.c 42
143         mov     dpl,_strcmp_ret_1_1
144         mov     dph,(_strcmp_ret_1_1 + 1)
145 00110$:
146         C$_strcmp.c$43$1$1 ==.
147         XG$strcmp$0$0 ==.
148         ret
149         .area   CSEG    (CODE)