Initial revision
[fw/sdcc] / device / lib / large / _strstr.asm
1 ;--------------------------------------------------------
2 ; File Created by SDCC : FreeWare ANSI-C Compiler
3 ; Version 2.1.9Ga Sun Jan 16 17:31:34 2000
4
5 ;--------------------------------------------------------
6         .module _strstr
7 ;--------------------------------------------------------
8 ; publics variables in this module
9 ;--------------------------------------------------------
10         .globl _strstr_PARM_2
11         .globl _strstr
12 ;--------------------------------------------------------
13 ; special function registers
14 ;--------------------------------------------------------
15 ;--------------------------------------------------------
16 ; special function bits 
17 ;--------------------------------------------------------
18 ;--------------------------------------------------------
19 ; internal ram data
20 ;--------------------------------------------------------
21         .area   DSEG    (DATA)
22 _strstr_sloc0_1_0:
23         .ds     0x0003
24 _strstr_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 _strstr_PARM_2:
43         .ds     0x0003
44 _strstr_str1_1_1:
45         .ds     0x0003
46 _strstr_cp_1_1:
47         .ds     0x0003
48 ;--------------------------------------------------------
49 ; global & static initialisations
50 ;--------------------------------------------------------
51         .area GSINIT (CODE)
52 ;--------------------------------------------------------
53 ; code
54 ;--------------------------------------------------------
55         .area CSEG (CODE)
56         G$strstr$0$0 ==.
57 ;       _strstr.c 27
58 ;       -----------------------------------------
59 ;        function strstr
60 ;       -----------------------------------------
61 _strstr:
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 ;       _strstr.c 0
71         push    b
72         push    dph
73         push    dpl
74         mov     dptr,#_strstr_str1_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 ;       _strstr.c 32
84         mov     dptr,#_strstr_str1_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,#_strstr_cp_1_1
94         mov     a,r2
95         movx    @dptr,a
96         inc     dptr
97         mov     a,r3
98         movx    @dptr,a
99         inc     dptr
100         mov     a,r4
101         movx    @dptr,a
102 ;       _strstr.c 36
103         mov     dptr,#_strstr_PARM_2
104         movx    a,@dptr
105         mov     _strstr_sloc0_1_0,a
106         inc     dptr
107         movx    a,@dptr
108         mov     (_strstr_sloc0_1_0 + 1),a
109         inc     dptr
110         movx    a,@dptr
111         mov     (_strstr_sloc0_1_0 + 2),a
112         mov     dpl,_strstr_sloc0_1_0
113         mov     dph,(_strstr_sloc0_1_0 + 1)
114         mov     b,(_strstr_sloc0_1_0 + 2)
115         lcall   __gptrget
116 ; Peephole 105   removed redundant mov
117         mov  r0,a
118 ; Peephole 109   removed ljmp by inverse jump logic
119         jnz  00122$
120 00123$:
121 ;       _strstr.c 37
122         mov     dpl,r2
123         mov     dph,r3
124         mov     b,r4
125         ljmp    00113$
126 ;       _strstr.c 39
127 00122$:
128 00110$:
129         mov     dpl,r2
130         mov     dph,r3
131         mov     b,r4
132         lcall   __gptrget
133 ; Peephole 105   removed redundant mov
134         mov  r0,a
135         jnz     00124$
136         ljmp    00112$
137 00124$:
138 ;       _strstr.c 44
139         mov     _strstr_sloc1_1_0,r2
140         mov     (_strstr_sloc1_1_0 + 1),r3
141         mov     (_strstr_sloc1_1_0 + 2),r4
142         mov     r6,_strstr_sloc0_1_0
143         mov     r7,(_strstr_sloc0_1_0 + 1)
144         mov     r5,(_strstr_sloc0_1_0 + 2)
145 00105$:
146         mov     dpl,_strstr_sloc1_1_0
147         mov     dph,(_strstr_sloc1_1_0 + 1)
148         mov     b,(_strstr_sloc1_1_0 + 2)
149         lcall   __gptrget
150 ; Peephole 105   removed redundant mov
151         mov  r0,a
152 ; Peephole 110   removed ljmp by inverse jump logic
153         jz  00107$
154 00125$:
155         mov     dpl,r6
156         mov     dph,r7
157         mov     b,r5
158         lcall   __gptrget
159 ; Peephole 105   removed redundant mov
160         mov  r1,a
161 ; Peephole 110   removed ljmp by inverse jump logic
162         jz  00107$
163 00126$:
164         clr     c
165         mov     a,r0
166         subb    a,r1
167 ; Peephole 109   removed ljmp by inverse jump logic
168         jnz  00107$
169 00127$:
170 ;       _strstr.c 45
171         inc     _strstr_sloc1_1_0
172         clr     a
173         cjne    a,_strstr_sloc1_1_0,00128$
174         inc     (_strstr_sloc1_1_0 + 1)
175 00128$:
176         inc     r6
177         cjne    r6,#0x00,00129$
178         inc     r7
179 00129$:
180 ; Peephole 132   changed ljmp to sjmp
181         sjmp 00105$
182 00107$:
183 ;       _strstr.c 47
184         mov     dpl,r6
185         mov     dph,r7
186         mov     b,r5
187         lcall   __gptrget
188 ; Peephole 105   removed redundant mov
189         mov  r6,a
190 ; Peephole 109   removed ljmp by inverse jump logic
191         jnz  00109$
192 00130$:
193 ;       _strstr.c 48
194         mov     dptr,#_strstr_cp_1_1
195         movx    a,@dptr
196         mov     r6,a
197         inc     dptr
198         movx    a,@dptr
199         mov     r0,a
200         inc     dptr
201         movx    a,@dptr
202         mov     r1,a
203         mov     dpl,r6
204         mov     dph,r0
205         mov     b,r1
206 ; Peephole 132   changed ljmp to sjmp
207         sjmp 00113$
208 00109$:
209 ;       _strstr.c 50
210         inc     r2
211         cjne    r2,#0x00,00131$
212         inc     r3
213 00131$:
214         mov     dptr,#_strstr_cp_1_1
215         mov     a,r2
216         movx    @dptr,a
217         inc     dptr
218         mov     a,r3
219         movx    @dptr,a
220         inc     dptr
221         mov     a,r4
222         movx    @dptr,a
223         ljmp    00110$
224 00112$:
225 ;       _strstr.c 53
226 ; Peephole 181   used 16 bit load of dptr
227         mov  dptr,#0x0000
228         mov     b,#0x00
229 00113$:
230         C$_strstr.c$54$1$1 ==.
231         XG$strstr$0$0 ==.
232         ret
233         .area   CSEG    (CODE)