📄 lcdprintf.lst
字号:
227 0140 1370 strb r3, [r2] 228 0142 FB68 ldr r3, [r7, #12] 229 0144 0133 add r3, r3, #1 230 0146 FB60 str r3, [r7, #12] 231 .L16: 96:LCD/lcdprintf.c **** }
97:LCD/lcdprintf.c **** }
98:LCD/lcdprintf.c **** #endif
99:LCD/lcdprintf.c ****
100:LCD/lcdprintf.c **** #ifdef USE_LONG
101:LCD/lcdprintf.c **** islong=0; //default int value
232 .loc 1 101 0 233 0148 3A1C mov r2, r7 234 014a 0D3A sub r2, r2, #13 235 014c 0023 mov r3, #0 236 014e 1370 strb r3, [r2] 102:LCD/lcdprintf.c **** #ifdef USE_UPPER
103:LCD/lcdprintf.c **** if(format_flag=='l' || format_flag=='L') //Long value
237 .loc 1 103 0 238 0150 3B1C mov r3, r7 239 0152 173B sub r3, r3, #23 240 0154 1B78 ldrb r3, [r3] 241 0156 6C2B cmp r3, #108 242 0158 04D0 beq .L19 243 015a 3B1C mov r3, r7 244 015c 173B sub r3, r3, #23 245 015e 1B78 ldrb r3, [r3] 246 0160 4C2B cmp r3, #76 247 0162 0BD1 bne .L21 248 .L19: 104:LCD/lcdprintf.c **** #else
105:LCD/lcdprintf.c **** if(format_flag=='l') //Long value
106:LCD/lcdprintf.c **** #endif
107:LCD/lcdprintf.c **** {
108:LCD/lcdprintf.c **** islong=1;
249 .loc 1 108 0 250 0164 3A1C mov r2, r7 251 0166 0D3A sub r2, r2, #13 252 0168 0123 mov r3, #1 253 016a 1370 strb r3, [r2] 109:LCD/lcdprintf.c **** format_flag = *format++; //get char after 'l' or 'L'
254 .loc 1 109 0 255 016c 3A1C mov r2, r7 256 016e 173A sub r2, r2, #23 257 0170 FB68 ldr r3, [r7, #12] 258 0172 1B78 ldrb r3, [r3] 259 0174 1370 strb r3, [r2] 260 0176 FB68 ldr r3, [r7, #12] 261 0178 0133 add r3, r3, #1 262 017a FB60 str r3, [r7, #12] 263 .L21: 110:LCD/lcdprintf.c **** }
111:LCD/lcdprintf.c **** #endif
112:LCD/lcdprintf.c ****
113:LCD/lcdprintf.c **** switch (format_flag)
264 .loc 1 113 0 265 017c 3B1C mov r3, r7 266 017e 173B sub r3, r3, #23 267 0180 1B78 ldrb r3, [r3] 268 0182 191C mov r1, r3 269 0184 4339 sub r1, r1, #67 270 0186 3022 mov r2, #48 271 0188 5242 neg r2, r2 272 018a D219 add r2, r2, r7 273 018c 1160 str r1, [r2] 274 018e 3023 mov r3, #48 275 0190 5B42 neg r3, r3 276 0192 DB19 add r3, r3, r7 277 0194 1B68 ldr r3, [r3] 278 0196 352B cmp r3, #53 279 0198 14D8 bhi .L22 280 019a 3021 mov r1, #48 281 019c 4942 neg r1, r1 282 019e C919 add r1, r1, r7 283 01a0 0968 ldr r1, [r1] 284 01a2 8A00 lsl r2, r1, #2 285 01a4 934B ldr r3, .L57 286 01a6 D318 add r3, r2, r3 287 01a8 1B68 ldr r3, [r3] 288 01aa 9F46 mov pc, r3 289 .section .rodata 290 .align 2 291 .align 2 292 .L28: 293 0000 AC010000 .word .L23 294 0004 16020000 .word .L24 295 0008 C4010000 .word .L22 296 000c C4010000 .word .L22 297 0010 C4010000 .word .L22 298 0014 C4010000 .word .L22 299 0018 16020000 .word .L24 300 001c C4010000 .word .L22 301 0020 C4010000 .word .L22 302 0024 C4010000 .word .L22 303 0028 C4010000 .word .L22 304 002c C4010000 .word .L22 305 0030 C4010000 .word .L22 306 0034 C4010000 .word .L22 307 0038 C4010000 .word .L22 308 003c C4010000 .word .L22 309 0040 D2010000 .word .L25 310 0044 C4010000 .word .L22 311 0048 28020000 .word .L33 312 004c C4010000 .word .L22 313 0050 C4010000 .word .L22 314 0054 20020000 .word .L27 315 0058 C4010000 .word .L22 316 005c C4010000 .word .L22 317 0060 C4010000 .word .L22 318 0064 C4010000 .word .L22 319 0068 C4010000 .word .L22 320 006c C4010000 .word .L22 321 0070 C4010000 .word .L22 322 0074 C4010000 .word .L22 323 0078 C4010000 .word .L22 324 007c C4010000 .word .L22 325 0080 AC010000 .word .L23 326 0084 16020000 .word .L24 327 0088 C4010000 .word .L22 328 008c C4010000 .word .L22 329 0090 C4010000 .word .L22 330 0094 C4010000 .word .L22 331 0098 16020000 .word .L24 332 009c C4010000 .word .L22 333 00a0 C4010000 .word .L22 334 00a4 C4010000 .word .L22 335 00a8 C4010000 .word .L22 336 00ac C4010000 .word .L22 337 00b0 C4010000 .word .L22 338 00b4 C4010000 .word .L22 339 00b8 C4010000 .word .L22 340 00bc C4010000 .word .L22 341 00c0 D2010000 .word .L25 342 00c4 C4010000 .word .L22 343 00c8 28020000 .word .L33 344 00cc C4010000 .word .L22 345 00d0 C4010000 .word .L22 346 00d4 20020000 .word .L27 347 .text 348 .L23: 114:LCD/lcdprintf.c **** {
115:LCD/lcdprintf.c **** #ifdef USE_CHAR
116:LCD/lcdprintf.c **** case 'c':
117:LCD/lcdprintf.c **** #ifdef USE_UPPER
118:LCD/lcdprintf.c **** case 'C':
119:LCD/lcdprintf.c **** #endif
120:LCD/lcdprintf.c **** format_flag = va_arg(ap,int);
349 .loc 1 120 0 350 01ac 3B1C mov r3, r7 351 01ae 283B sub r3, r3, #40 352 01b0 1968 ldr r1, [r3] 353 01b2 0A1D add r2, r1, #4 354 01b4 3B1C mov r3, r7 355 01b6 283B sub r3, r3, #40 356 01b8 1A60 str r2, [r3] 357 01ba 0B1C mov r3, r1 358 01bc 1B68 ldr r3, [r3] 359 01be 3A1C mov r2, r7 360 01c0 173A sub r2, r2, #23 361 01c2 1370 strb r3, [r2] 362 .L22: 121:LCD/lcdprintf.c **** // no break -> run into default
122:LCD/lcdprintf.c **** #endif
123:LCD/lcdprintf.c ****
124:LCD/lcdprintf.c **** default:
125:LCD/lcdprintf.c **** lcdmyputchar(format_flag);
363 .loc 1 125 0 364 01c4 3B1C mov r3, r7 365 01c6 173B sub r3, r3, #23 366 01c8 1B78 ldrb r3, [r3] 367 01ca 181C mov r0, r3 368 01cc FFF7FEFF bl lcdmyputchar 126:LCD/lcdprintf.c **** continue;
369 .loc 1 126 0 370 01d0 54E7 b .L8 371 .L25: 127:LCD/lcdprintf.c ****
128:LCD/lcdprintf.c **** #ifdef USE_STRING
129:LCD/lcdprintf.c **** #ifdef USE_UPPER
130:LCD/lcdprintf.c **** case 'S':
131:LCD/lcdprintf.c **** #endif
132:LCD/lcdprintf.c **** case 's':
133:LCD/lcdprintf.c **** ptr = (unsigned char*)va_arg(ap,char *);
372 .loc 1 133 0 373 01d2 3B1C mov r3, r7 374 01d4 283B sub r3, r3, #40 375 01d6 1968 ldr r1, [r3] 376 01d8 0A1D add r2, r1, #4 377 01da 3B1C mov r3, r7 378 01dc 283B sub r3, r3, #40 379 01de 1A60 str r2, [r3] 380 01e0 0B1C mov r3, r1 381 01e2 1A68 ldr r2, [r3] 382 01e4 3B1C mov r3, r7 383 01e6 143B sub r3, r3, #20 384 01e8 1A60 str r2, [r3] 134:LCD/lcdprintf.c **** while(*ptr) { lcdmyputchar(*ptr); ptr++; }
385 .loc 1 134 0 386 01ea 0DE0 b .L30 387 .L31: 388 01ec 3B1C mov r3, r7 389 01ee 143B sub r3, r3, #20 390 01f0 1B68 ldr r3, [r3] 391 01f2 1B78 ldrb r3, [r3] 392 01f4 181C mov r0, r3 393 01f6 FFF7FEFF bl lcdmyputchar 394 01fa 3A1C mov r2, r7 395 01fc 143A sub r2, r2, #20 396 01fe 3B1C mov r3, r7 397 0200 143B sub r3, r3, #20 398 0202 1B68 ldr r3, [r3] 399 0204 0133 add r3, r3, #1 400 0206 1360 str r3, [r2] 401 .L30: 402 0208 3B1C mov r3, r7 403 020a 143B sub r3, r3, #20 404 020c 1B68 ldr r3, [r3] 405 020e 1B78 ldrb r3, [r3] 406 0210 002B cmp r3, #0 407 0212 EBD1 bne .L31 135:LCD/lcdprintf.c **** continue;
408 .loc 1 135 0 409 0214 32E7 b .L8 410 .L24: 136:LCD/lcdprintf.c **** #endif
137:LCD/lcdprintf.c ****
138:LCD/lcdprintf.c **** #ifdef USE_OCTAL
139:LCD/lcdprintf.c **** case 'o':
140:LCD/lcdprintf.c **** #ifdef USE_UPPER
141:LCD/lcdprintf.c **** case 'O':
142:LCD/lcdprintf.c **** #endif
143:LCD/lcdprintf.c **** base = 8;
144:LCD/lcdprintf.c **** lcdmyputchar('0');
145:LCD/lcdprintf.c **** goto CONVERSION_LOOP;
146:LCD/lcdprintf.c **** #endif
147:LCD/lcdprintf.c ****
148:LCD/lcdprintf.c **** #ifdef USE_INTEGER //don't use %i, is same as %d
149:LCD/lcdprintf.c **** case 'i':
150:LCD/lcdprintf.c **** #ifdef USE_UPPER
151:LCD/lcdprintf.c **** case 'I':
152:LCD/lcdprintf.c **** #endif
153:LCD/lcdprintf.c **** #endif
154:LCD/lcdprintf.c **** case 'd':
155:LCD/lcdprintf.c **** #ifdef USE_UPPER
156:LCD/lcdprintf.c **** case 'D':
157:LCD/lcdprintf.c **** #endif
158:LCD/lcdprintf.c **** issigned=1;
411 .loc 1 158 0 412 0216 3A1C mov r2, r7 413 0218 0E3A sub r2, r2, #14 414 021a 0123 mov r3, #1 415 021c 1370 strb r3, [r2] 159:LCD/lcdprintf.c **** // no break -> run into next case
160:LCD/lcdprintf.c **** case 'u':
161:LCD/lcdprintf.c **** #ifdef USE_UPPER
162:LCD/lcdprintf.c **** case 'U':
163:LCD/lcdprintf.c **** #endif
164:LCD/lcdprintf.c ****
165:LCD/lcdprintf.c **** //don't insert some case below this if USE_HEX is undefined !
166:LCD/lcdprintf.c **** //or put goto CONVERSION_LOOP; before next case.
167:LCD/lcdprintf.c **** #ifdef USE_HEX
168:LCD/lcdprintf.c **** goto CONVERSION_LOOP;
416 .loc 1 168 0 417 021e 03E0 b .L33 418 .L27: 169:LCD/lcdprintf.c **** case 'x':
170:LCD/lcdprintf.c **** #ifdef USE_UPPER
171:LCD/lcdprintf.c **** case 'X':
172:LCD/lcdprintf.c **** #endif
173:LCD/lcdprintf.c **** base = 16;
419 .loc 1 173 0 420 0220 3A1C mov r2, r7 421 0222 163A sub r2, r2, #22 422 0224 1023 mov r3, #16 423 0226 1380 strh r3, [r2] 424 .L33: 174:LCD/lcdprintf.c **** #endif
175:LCD/lcdprintf.c ****
176:LCD/lcdprintf.c **** CONVERSION_LOOP:
177:LCD/lcdprintf.c ****
178:LCD/lcdprintf.c **** if(issigned) //Signed types
425 .loc 1 178 0 426 0228 3B1C mov r3, r7 427 022a 0E3B sub r3, r3, #14 428 022c 1B78 ldrb r3, [r3] 429 022e 002B cmp r3, #0 430 0230 33D0 beq .L34 179:LCD/lcdprintf.c **** {
180:LCD/lcdprintf.c **** #ifdef USE_LONG
181:LCD/lcdprintf.c **** if(islong) { s_val = va_arg(ap,long); }
431 .loc 1 181 0 432 0232 3B1C mov r3, r7 433 0234 0D3B sub r3, r3, #13 434 0236 1B78 ldrb r3, [r3] 435 0238 002B cmp r3, #0 436 023a 0CD0 beq .L36 437 023c 3B1C mov r3, r7 438 023e 283B sub r3, r3, #40 439 0240 1968 ldr r1, [r3] 440 0242 0A1D add r2, r1, #4 441 0244 3B1C mov r3, r7 442 0246 283B sub r3, r3, #40 443 0248 1A60 str r2, [r3] 444 024a 0B1C mov r3, r1 445 024c 3A1C mov r2, r7 446 024e 083A sub r2, r2, #8 447 0250 1B68 ldr r3, [r3] 448 0252 1360 str r3, [r2] 449 0254 0BE0 b .L38 450 .L36: 182:LCD/lcdprintf.c **** else { s_val = va_arg(ap,int); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -