Initial revision
[fw/sdcc] / device / lib / large / _strcmp.asm
1 ;--------------------------------------------------------
2 ; File Created by SDCC : FreeWare ANSI-C Compiler
3 ; Version 2.1.9Ga Sun Jan 16 17:31:33 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 _strcmp_sloc0_1_0:
23         .ds     0x0001
24 _strcmp_sloc1_1_0:
25         .ds     0x0003
26 ;--------------------------------------------------------
27 ; overlayable items in internal ram 
28 ;--------------------------------------------------------
29         .area   OSEG    (OVR,DATA)
30 ;--------------------------------------------------------
31 ; indirectly addressable internal ram data
32 ;--------------------------------------------------------
33         .area   ISEG    (DATA)
34 ;--------------------------------------------------------
35 ; bit data
36 ;--------------------------------------------------------
37         .area   BSEG    (BIT)
38 ;--------------------------------------------------------
39 ; external ram data
40 ;--------------------------------------------------------
41         .area   XSEG    (XDATA)
42 _strcmp_PARM_2:
43         .ds     0x0003
44 _strcmp_src_1_1:
45         .ds     0x0003
46 _strcmp_ret_1_1:
47         .ds     0x0002
48 ;--------------------------------------------------------
49 ; global & static initialisations
50 ;--------------------------------------------------------
51         .area GSINIT (CODE)
52 ;--------------------------------------------------------
53 ; code
54 ;--------------------------------------------------------
55         .area CSEG (CODE)
56         G$strcmp$0$0 ==.
57 ;       _strcmp.c 27
58 ;       -----------------------------------------
59 ;        function strcmp
60 ;       -----------------------------------------
61 _strcmp:
62         ar2 = 0x02
63         ar3 = 0x03
64         ar4 = 0x04
65         ar5 = 0x05
66         ar6 = 0x06
67         ar7 = 0x07
68         ar0 = 0x00
69         ar1 = 0x01
70 ;       _strcmp.c 42
71         push    b
72         push    dph
73         push    dpl
74         mov     dptr,#_strcmp_src_1_1
75         pop     acc
76         movx    @dptr,a
77         pop     acc
78         inc     dptr
79         movx    @dptr,a
80         pop     acc
81         inc     dptr
82         movx    @dptr,a
83 ;       _strcmp.c 34
84         mov     dptr,#_strcmp_src_1_1
85         movx    a,@dptr
86         mov     r2,a
87         inc     dptr
88         movx    a,@dptr
89         mov     r3,a
90         inc     dptr
91         movx    a,@dptr
92         mov     r4,a
93         mov     dptr,#_strcmp_PARM_2
94         movx    a,@dptr
95         mov     _strcmp_sloc1_1_0,a
96         inc     dptr
97         movx    a,@dptr
98         mov     (_strcmp_sloc1_1_0 + 1),a
99         inc     dptr
100         movx    a,@dptr
101         mov     (_strcmp_sloc1_1_0 + 2),a
102 00102$:
103         mov     dpl,_strcmp_sloc1_1_0
104         mov     dph,(_strcmp_sloc1_1_0 + 1)
105         mov     b,(_strcmp_sloc1_1_0 + 2)
106         lcall   __gptrget
107         mov     _strcmp_sloc0_1_0,a
108         mov     dpl,r2
109         mov     dph,r3
110         mov     b,r4
111         lcall   __gptrget
112 ; Peephole 106   removed redundant mov 
113         mov  r1,a
114         clr  c
115         subb    a,_strcmp_sloc0_1_0
116 ; Peephole 166   removed redundant mov
117         mov  r1,a
118         mov  ar0,r1 
119         rlc     a
120         subb    a,acc
121         mov     r5,a
122         mov     dptr,#_strcmp_ret_1_1
123         mov     a,r0
124         movx    @dptr,a
125         inc     dptr
126         mov     a,r5
127         movx    @dptr,a
128         mov     a,r1
129 ; Peephole 109   removed ljmp by inverse jump logic
130         jnz  00104$
131 00117$:
132         mov     a,_strcmp_sloc0_1_0
133 ; Peephole 110   removed ljmp by inverse jump logic
134         jz  00104$
135 00118$:
136 ;       _strcmp.c 35
137         inc     r2
138         cjne    r2,#0x00,00119$
139         inc     r3
140 00119$:
141         mov     dptr,#_strcmp_src_1_1
142         mov     a,r2
143         movx    @dptr,a
144         inc     dptr
145         mov     a,r3
146         movx    @dptr,a
147         inc     dptr
148         mov     a,r4
149         movx    @dptr,a
150         inc     _strcmp_sloc1_1_0
151         clr     a
152         cjne    a,_strcmp_sloc1_1_0,00120$
153         inc     (_strcmp_sloc1_1_0 + 1)
154 00120$:
155 ; Peephole 132   changed ljmp to sjmp
156         sjmp 00102$
157 00104$:
158 ;       _strcmp.c 37
159         mov     dptr,#_strcmp_src_1_1
160         mov     a,r2
161         movx    @dptr,a
162         inc     dptr
163         mov     a,r3
164         movx    @dptr,a
165         inc     dptr
166         mov     a,r4
167         movx    @dptr,a
168         mov     a,r5
169 ; Peephole 111   removed ljmp by inverse jump logic
170         jnb  acc.7,00108$
171 00121$:
172 ;       _strcmp.c 38
173         mov     dptr,#_strcmp_ret_1_1
174 ; Peephole 101   removed redundant mov
175         mov  a,#0xff
176         movx @dptr,a
177         inc  dptr
178         movx @dptr,a
179 ; Peephole 132   changed ljmp to sjmp
180         sjmp 00109$
181 00108$:
182 ;       _strcmp.c 39
183         clr     c
184 ; Peephole 180   changed mov to clr
185         clr  a
186         subb    a,r0
187 ; Peephole 159   avoided xrl during execution
188         mov  a,#(0x00 ^ 0x80)
189         mov     b,r5
190         xrl     b,#0x80
191         subb    a,b
192 ; Peephole 108   removed ljmp by inverse jump logic
193         jnc  00109$
194 00122$:
195 ;       _strcmp.c 40
196         mov     dptr,#_strcmp_ret_1_1
197         clr     a
198         inc     dptr
199         movx    @dptr,a
200         lcall   __decdptr
201         mov     a,#0x01
202         movx    @dptr,a
203 00109$:
204 ;       _strcmp.c 42
205         mov     dptr,#_strcmp_ret_1_1
206         movx    a,@dptr
207         mov     r2,a
208         inc     dptr
209         movx    a,@dptr
210         mov     r3,a
211         mov     dpl,r2
212         mov     dph,r3
213 00110$:
214         C$_strcmp.c$43$1$1 ==.
215         XG$strcmp$0$0 ==.
216         ret
217         .area   CSEG    (CODE)