📄 rprintf.lst
字号:
171 00b2 BDD1 bne .L56 172 00b4 19E0 b .L24 173 .L30: 174 00b6 7528 cmp r0, #117 175 00b8 23D0 beq .L26 176 00ba 7828 cmp r0, #120 177 00bc 13D0 beq .L27 178 00be 7328 cmp r0, #115 179 00c0 B6D1 bne .L56 180 00c2 04E0 b .L25 181 .L23: 146:usart/rprintf.c **** {
147:usart/rprintf.c **** #ifdef USE_CHAR
148:usart/rprintf.c **** case 'c':
149:usart/rprintf.c **** #ifdef USE_UPPER
150:usart/rprintf.c **** case 'C':
151:usart/rprintf.c **** #endif
152:usart/rprintf.c **** format_flag = va_arg(ap,int);
182 .loc 1 152 0 183 00c4 059A ldr r2, [sp, #20] 184 00c6 1078 ldrb r0, [r2] 185 00c8 131D add r3, r2, #4 186 00ca 0593 str r3, [sp, #20] 187 00cc B0E7 b .L56 188 .LVL16: 189 .L25: 153:usart/rprintf.c **** // no break -> run into default
154:usart/rprintf.c **** #endif
155:usart/rprintf.c ****
156:usart/rprintf.c **** default:
157:usart/rprintf.c **** myputchar(format_flag);
158:usart/rprintf.c **** continue;
159:usart/rprintf.c ****
160:usart/rprintf.c **** #ifdef USE_STRING
161:usart/rprintf.c **** #ifdef USE_UPPER
162:usart/rprintf.c **** case 'S':
163:usart/rprintf.c **** #endif
164:usart/rprintf.c **** case 's':
165:usart/rprintf.c **** ptr = (unsigned char*)va_arg(ap,char *);
190 .loc 1 165 0 191 00ce 059A ldr r2, [sp, #20] 192 00d0 1468 ldr r4, [r2] 193 .LVL17: 194 00d2 131D add r3, r2, #4 195 00d4 0593 str r3, [sp, #20] 196 00d6 02E0 b .L31 197 .LVL18: 198 .L32: 166:usart/rprintf.c **** while(*ptr) { myputchar(*ptr); ptr++; }
199 .loc 1 166 0 200 00d8 FFF7FEFF bl myputchar 201 .LVL19: 202 00dc 0134 add r4, r4, #1 203 .LVL20: 204 .L31: 205 00de 2078 ldrb r0, [r4] 206 .LVL21: 207 00e0 0028 cmp r0, #0 208 00e2 F9D1 bne .L32 209 00e4 A6E7 b .L10 210 .LVL22: 211 .L27: 212 00e6 1027 mov r7, #16 213 00e8 0CE0 b .L33 214 .L24: 215 00ea 0598 ldr r0, [sp, #20] 216 .LVL23: 167:usart/rprintf.c **** continue;
168:usart/rprintf.c **** #endif
169:usart/rprintf.c ****
170:usart/rprintf.c **** #ifdef USE_OCTAL
171:usart/rprintf.c **** case 'o':
172:usart/rprintf.c **** #ifdef USE_UPPER
173:usart/rprintf.c **** case 'O':
174:usart/rprintf.c **** #endif
175:usart/rprintf.c **** base = 8;
176:usart/rprintf.c **** myputchar('0');
177:usart/rprintf.c **** goto CONVERSION_LOOP;
178:usart/rprintf.c **** #endif
179:usart/rprintf.c ****
180:usart/rprintf.c **** #ifdef USE_INTEGER //don't use %i, is same as %d
181:usart/rprintf.c **** case 'i':
182:usart/rprintf.c **** #ifdef USE_UPPER
183:usart/rprintf.c **** case 'I':
184:usart/rprintf.c **** #endif
185:usart/rprintf.c **** #endif
186:usart/rprintf.c **** case 'd':
187:usart/rprintf.c **** #ifdef USE_UPPER
188:usart/rprintf.c **** case 'D':
189:usart/rprintf.c **** #endif
190:usart/rprintf.c **** issigned=1;
191:usart/rprintf.c **** // no break -> run into next case
192:usart/rprintf.c **** case 'u':
193:usart/rprintf.c **** #ifdef USE_UPPER
194:usart/rprintf.c **** case 'U':
195:usart/rprintf.c **** #endif
196:usart/rprintf.c ****
197:usart/rprintf.c **** //don't insert some case below this if USE_HEX is undefined !
198:usart/rprintf.c **** //or put goto CONVERSION_LOOP; before next case.
199:usart/rprintf.c **** #ifdef USE_HEX
200:usart/rprintf.c **** goto CONVERSION_LOOP;
201:usart/rprintf.c **** case 'x':
202:usart/rprintf.c **** #ifdef USE_UPPER
203:usart/rprintf.c **** case 'X':
204:usart/rprintf.c **** #endif
205:usart/rprintf.c **** base = 16;
206:usart/rprintf.c **** #endif
207:usart/rprintf.c ****
208:usart/rprintf.c **** CONVERSION_LOOP:
209:usart/rprintf.c ****
210:usart/rprintf.c **** if(issigned) //Signed types
211:usart/rprintf.c **** {
212:usart/rprintf.c **** #ifdef USE_LONG
213:usart/rprintf.c **** if(islong) { s_val = va_arg(ap,long); }
214:usart/rprintf.c **** else { s_val = va_arg(ap,int); }
217 .loc 1 214 0 218 00ec 031D add r3, r0, #4 219 00ee 0593 str r3, [sp, #20] 220 00f0 0468 ldr r4, [r0] 221 .LVL24: 215:usart/rprintf.c **** #else
216:usart/rprintf.c **** s_val = va_arg(ap,int);
217:usart/rprintf.c **** #endif
218:usart/rprintf.c ****
219:usart/rprintf.c **** if(s_val < 0) //Value negativ ?
222 .loc 1 219 0 223 00f2 002C cmp r4, #0 224 00f4 03DA bge .L37 225 .LVL25: 220:usart/rprintf.c **** {
221:usart/rprintf.c **** s_val = - s_val; //Make it positiv
222:usart/rprintf.c **** myputchar('-'); //Output sign
226 .loc 1 222 0 227 00f6 2D20 mov r0, #45 228 .LVL26: 229 .loc 1 221 0 230 00f8 6442 neg r4, r4 231 .loc 1 222 0 232 00fa FFF7FEFF bl myputchar 233 .LVL27: 234 .L37: 223:usart/rprintf.c **** }
224:usart/rprintf.c ****
225:usart/rprintf.c **** u_val = (unsigned long)s_val;
235 .loc 1 225 0 236 00fe 0A27 mov r7, #10 237 0100 04E0 b .L39 238 .LVL28: 239 .L26: 240 0102 0A27 mov r7, #10 241 .L33: 242 0104 0598 ldr r0, [sp, #20] 243 .LVL29: 226:usart/rprintf.c **** }
227:usart/rprintf.c **** else //Unsigned types
228:usart/rprintf.c **** {
229:usart/rprintf.c **** #ifdef USE_LONG
230:usart/rprintf.c **** if(islong) { u_val = va_arg(ap,unsigned long); }
231:usart/rprintf.c **** else { u_val = va_arg(ap,unsigned int); }
244 .loc 1 231 0 245 0106 031D add r3, r0, #4 246 0108 0593 str r3, [sp, #20] 247 010a 0468 ldr r4, [r0] 248 .LVL30: 249 .L39: 232:usart/rprintf.c **** #else
233:usart/rprintf.c **** u_val = va_arg(ap,unsigned int);
234:usart/rprintf.c **** #endif
235:usart/rprintf.c **** }
236:usart/rprintf.c ****
237:usart/rprintf.c **** ptr = scratch + SCRATCH;
238:usart/rprintf.c **** *--ptr = 0;
250 .loc 1 238 0 251 010c 0022 mov r2, #0 252 010e 02AB add r3, sp, #8 253 0110 6D46 mov r5, sp 254 0112 DA72 strb r2, [r3, #11] 255 0114 1335 add r5, r5, #19 256 .LVL31: 257 .L42: 258 .LVL32: 259 .LBB2: 239:usart/rprintf.c **** do
240:usart/rprintf.c **** {
241:usart/rprintf.c **** char ch = u_val % base + '0';
260 .loc 1 241 0 261 0116 201C mov r0, r4 262 0118 391C mov r1, r7 263 .LVL33: 264 011a FFF7FEFF bl __umodsi3 265 011e 3030 add r0, r0, #48 266 0120 0006 lsl r0, r0, #24 267 0122 000E lsr r0, r0, #24 268 .LVL34: 242:usart/rprintf.c **** #ifdef USE_HEX
243:usart/rprintf.c **** if (ch > '9')
269 .loc 1 243 0 270 0124 3928 cmp r0, #57 271 0126 02D9 bls .L43 244:usart/rprintf.c **** {
245:usart/rprintf.c **** ch += 'a' - '9' - 1;
246:usart/rprintf.c **** #ifdef USE_UPPERHEX
247:usart/rprintf.c **** ch-=0x20;
272 .loc 1 247 0 273 0128 C31D add r3, r0, #7 274 012a 1B06 lsl r3, r3, #24 275 012c 180E lsr r0, r3, #24 276 .L43: 248:usart/rprintf.c **** #endif
249:usart/rprintf.c **** }
250:usart/rprintf.c **** #endif
251:usart/rprintf.c **** *--ptr = ch;
277 .loc 1 251 0 278 012e 013D sub r5, r5, #1 279 0130 2870 strb r0, [r5] 252:usart/rprintf.c **** u_val /= base;
280 .loc 1 252 0 281 0132 391C mov r1, r7 282 0134 201C mov r0, r4 283 .LVL35: 284 0136 FFF7FEFF bl __udivsi3 253:usart/rprintf.c ****
254:usart/rprintf.c **** #ifdef PADDING
255:usart/rprintf.c **** if(width) width--; //calculate number of padding chars
285 .loc 1 255 0 286 013a 019A ldr r2, [sp, #4] 287 .loc 1 252 0 288 013c 041C mov r4, r0 289 .loc 1 255 0 290 013e 002A cmp r2, #0 291 0140 04D0 beq .L45 292 0142 131C mov r3, r2 293 0144 013B sub r3, r3, #1 294 0146 1B06 lsl r3, r3, #24 295 0148 1B0E lsr r3, r3, #24 296 014a 0193 str r3, [sp, #4] 297 .L45: 298 .LBE2: 256:usart/rprintf.c **** #endif
257:usart/rprintf.c **** } while (u_val);
299 .loc 1 257 0 300 014c 002C cmp r4, #0 301 014e E2D1 bne .L42 302 0150 2C1C mov r4, r5 303 .LVL36: 304 0152 03E0 b .L48 305 .L49: 258:usart/rprintf.c ****
259:usart/rprintf.c **** #ifdef PADDING
260:usart/rprintf.c **** while(width--) *--ptr = fill; //insert padding chars
306 .loc 1 260 0 307 0154 6B46 mov r3, sp 308 0156 1B78 ldrb r3, [r3] 309 0158 013C sub r4, r4, #1 310 015a 2370 strb r3, [r4] 311 .LVL37: 312 .L48: 313 015c 019A ldr r2, [sp, #4] 314 015e AB1A sub r3, r5, r2 315 0160 9C42 cmp r4, r3 316 0162 F7D1 bne .L49 317 .LVL38: 318 0164 02E0 b .L55 319 .L51: 261:usart/rprintf.c **** #endif
262:usart/rprintf.c ****
263:usart/rprintf.c **** while(*ptr) { myputchar(*ptr); ptr++; }
320 .loc 1 263 0 321 0166 FFF7FEFF bl myputchar 322 016a 0134 add r4, r4, #1 323 .L55: 324 016c 2078 ldrb r0, [r4] 325 016e 0028 cmp r0, #0 326 0170 F9D1 bne .L51 327 0172 5FE7 b .L10 328 .LVL39: 329 .L52: 264:usart/rprintf.c **** }
265:usart/rprintf.c **** }
266:usart/rprintf.c **** }
330 .loc 1 266 0 331 0174 06B0 add sp, sp, #24 332 .LVL40: 333 @ sp needed for prologue 334 .LVL41: 335 .LVL42: 336 .LVL43: 337 .LVL44: 338 0176 F0BC pop {r4, r5, r6, r7} 339 0178 08BC pop {r3} 340 017a 04B0 add sp, sp, #16 341 017c 1847 bx r3 342 .LFE3: 407 .Letext0:DEFINED SYMBOLS *ABS*:00000000 rprintf.c/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccdxwprf.s:1 .text:00000000 $t/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccdxwprf.s:15 .text:00000000 myputchar/cygdrive/c/DOCUME~1/Dima/LOCALS~1/Temp/ccdxwprf.s:51 .text:0000001c rprintfUNDEFINED SYMBOLSuart0_putc__umodsi3__udivsi3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -