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 _strrchr 7 ;-------------------------------------------------------- 8 ; publics variables in this module 9 ;-------------------------------------------------------- 10 .globl _strrchr_PARM_2 11 .globl _strrchr 12 ;-------------------------------------------------------- 13 ; special function registers 14 ;-------------------------------------------------------- 15 ;-------------------------------------------------------- 16 ; special function bits 17 ;-------------------------------------------------------- 18 ;-------------------------------------------------------- 19 ; internal ram data 20 ;-------------------------------------------------------- 21 .area DSEG (DATA) 0000 22 _strrchr_sloc0_1_0: 0000 23 .ds 0x0001 24 ;-------------------------------------------------------- 25 ; overlayable items in internal ram 26 ;-------------------------------------------------------- 27 .area OSEG (OVR,DATA) 28 ;-------------------------------------------------------- 29 ; indirectly addressable internal ram data 30 ;-------------------------------------------------------- 31 .area ISEG (DATA) 32 ;-------------------------------------------------------- 33 ; bit data 34 ;-------------------------------------------------------- 35 .area BSEG (BIT) 36 ;-------------------------------------------------------- 37 ; external ram data 38 ;-------------------------------------------------------- 39 .area XSEG (XDATA) 0000 40 _strrchr_PARM_2: 0000 41 .ds 0x0001 0001 42 _strrchr_string_1_1: 0001 43 .ds 0x0003 44 ;-------------------------------------------------------- 45 ; global & static initialisations 46 ;-------------------------------------------------------- 47 .area GSINIT (CODE) 48 ;-------------------------------------------------------- 49 ; code 50 ;-------------------------------------------------------- 51 .area CSEG (CODE) 0000 52 G$strrchr$0$0 ==. 53 ; _strrchr.c 27 54 ; ----------------------------------------- 55 ; function strrchr 56 ; ----------------------------------------- 0000 57 _strrchr: 0002 58 ar2 = 0x02 0003 59 ar3 = 0x03 0004 60 ar4 = 0x04 0005 61 ar5 = 0x05 0006 62 ar6 = 0x06 0007 63 ar7 = 0x07 0000 64 ar0 = 0x00 0001 65 ar1 = 0x01 66 ; _strrchr.c 0 0000 C0 F0 67 push b 0002 C0 83 68 push dph 0004 C0 82 69 push dpl 0006 90s00r01 70 mov dptr,#_strrchr_string_1_1 0009 D0 E0 71 pop acc 000B F0 72 movx @dptr,a 000C D0 E0 73 pop acc 000E A3 74 inc dptr 000F F0 75 movx @dptr,a 0010 D0 E0 76 pop acc 0012 A3 77 inc dptr 0013 F0 78 movx @dptr,a 79 ; _strrchr.c 32 0014 90s00r01 80 mov dptr,#_strrchr_string_1_1 0017 E0 81 movx a,@dptr 0018 FA 82 mov r2,a 0019 A3 83 inc dptr 001A E0 84 movx a,@dptr 001B FB 85 mov r3,a 001C A3 86 inc dptr 001D E0 87 movx a,@dptr 001E FC 88 mov r4,a 89 ; _strrchr.c 34 001F 8A 05 90 mov ar5,r2 0021 8B 06 91 mov ar6,r3 0023 8C 07 92 mov ar7,r4 0025 93 00101$: 0025 C0 02 94 push ar2 0027 C0 03 95 push ar3 0029 C0 04 96 push ar4 002B 8D 00 97 mov ar0,r5 002D 8E 01 98 mov ar1,r6 002F 8F 02 99 mov ar2,r7 0031 0D 100 inc r5 0032 BD 00 01 101 cjne r5,#0x00,00116$ 0035 0E 102 inc r6 0036 103 00116$: 0036 90s00r01 104 mov dptr,#_strrchr_string_1_1 0039 ED 105 mov a,r5 003A F0 106 movx @dptr,a 003B A3 107 inc dptr 003C EE 108 mov a,r6 003D F0 109 movx @dptr,a 003E A3 110 inc dptr 003F EF 111 mov a,r7 0040 F0 112 movx @dptr,a 0041 88 82 113 mov dpl,r0 0043 89 83 114 mov dph,r1 0045 8A F0 115 mov b,r2 0047 12s00r00 116 lcall __gptrget 004A F8 117 mov r0,a 004B D0 04 118 pop ar4 004D D0 03 119 pop ar3 004F D0 02 120 pop ar2 0051 E8 121 mov a,r0 122 ; Peephole 109 removed ljmp by inverse jump logic 0052 70 D1 123 jnz 00101$ 0054 124 00117$: 125 ; _strrchr.c 37 0054 90s00r00 126 mov dptr,#_strrchr_PARM_2 0057 E0 127 movx a,@dptr 0058 F5*00 128 mov _strrchr_sloc0_1_0,a 005A 129 00105$: 005A 90s00r01 130 mov dptr,#_strrchr_string_1_1 005D E0 131 movx a,@dptr 005E 24 FF 132 add a,#0xff 0060 FE 133 mov r6,a 0061 A3 134 inc dptr 0062 E0 135 movx a,@dptr 0063 34 FF 136 addc a,#0xff 0065 FF 137 mov r7,a 0066 A3 138 inc dptr 0067 E0 139 movx a,@dptr 0068 F8 140 mov r0,a 0069 90s00r01 141 mov dptr,#_strrchr_string_1_1 006C EE 142 mov a,r6 006D F0 143 movx @dptr,a 006E A3 144 inc dptr 006F EF 145 mov a,r7 0070 F0 146 movx @dptr,a 0071 A3 147 inc dptr 0072 E8 148 mov a,r0 0073 F0 149 movx @dptr,a 0074 EE 150 mov a,r6 0075 B5 02 0A 151 cjne a,ar2,00118$ 0078 EF 152 mov a,r7 0079 B5 03 06 153 cjne a,ar3,00118$ 007C E8 154 mov a,r0 007D B5 04 02 155 cjne a,ar4,00118$ 156 ; Peephole 132 changed ljmp to sjmp 0080 80 20 157 sjmp 00107$ 0082 158 00118$: 0082 C0 02 159 push ar2 0084 C0 03 160 push ar3 0086 C0 04 161 push ar4 0088 8E 82 162 mov dpl,r6 008A 8F 83 163 mov dph,r7 008C 88 F0 164 mov b,r0 008E 12s00r00 165 lcall __gptrget 166 ; Peephole 105 removed redundant mov 0091 FA 167 mov r2,a 0092 B5*00 04 168 cjne a,_strrchr_sloc0_1_0,00119$ 0095 74 01 169 mov a,#0x01 0097 80 01 170 sjmp 00120$ 0099 171 00119$: 0099 E4 172 clr a 009A 173 00120$: 009A D0 04 174 pop ar4 009C D0 03 175 pop ar3 009E D0 02 176 pop ar2 177 ; Peephole 110 removed ljmp by inverse jump logic 00A0 60 B8 178 jz 00105$ 00A2 179 00121$: 00A2 180 00107$: 181 ; _strrchr.c 40 00A2 8E 82 182 mov dpl,r6 00A4 8F 83 183 mov dph,r7 00A6 88 F0 184 mov b,r0 00A8 12s00r00 185 lcall __gptrget 186 ; Peephole 105 removed redundant mov 00AB FD 187 mov r5,a 188 ; Peephole 132 changed ljmp to sjmp 189 ; Peephole 199 optimized misc jump sequence 00AC B5*00 08 190 cjne a,_strrchr_sloc0_1_0,00109$ 191 ; Peephole 201 removed redundant sjmp 00AF 192 00122$: 00AF 193 00123$: 194 ; _strrchr.c 41 00AF 8E 82 195 mov dpl,r6 00B1 8F 83 196 mov dph,r7 00B3 88 F0 197 mov b,r0 198 ; Peephole 132 changed ljmp to sjmp 00B5 80 06 199 sjmp 00110$ 00B7 200 00109$: 201 ; _strrchr.c 43 202 ; Peephole 181 used 16 bit load of dptr 00B7 90 00 00 203 mov dptr,#0x0000 00BA 75 F0 00 204 mov b,#0x00 00BD 205 00110$: 00BD 206 C$_strrchr.c$44$1$1 ==. 00BD 207 XG$strrchr$0$0 ==. 00BD 22 208 ret 209 .area CSEG (CODE)