📄 format.cod
字号:
001a4 e59d3000 ldr r3, [sp]
001a8 e2833004 add r3, r3, #4
001ac e58d3000 str r3, [sp]
001b0 e59d3000 ldr r3, [sp]
001b4 e2433004 sub r3, r3, #4
001b8 e5933000 ldr r3, [r3]
001bc e58d3008 str r3, [sp, #8]
; 356 :
; 357 : if (l < 0)
001c0 e59d3008 ldr r3, [sp, #8]
001c4 e3530000 cmp r3, #0
001c8 aa000004 bge |$L37458|
; 358 : {
; 359 : pOutputByte('-');
001cc e3a0002d mov r0, #0x2D
001d0 eb000000 bl pOutputByte
; 360 : l = -l;
001d4 e59d3008 ldr r3, [sp, #8]
001d8 e2633000 rsb r3, r3, #0
001dc e58d3008 str r3, [sp, #8]
001e0 |$L37458|
; 361 : }
; 362 : pOutputNumDecimal((unsigned long)l);
001e0 e59d0008 ldr r0, [sp, #8]
001e4 eb000000 bl pOutputNumDecimal
; 363 : }
; 364 : break;
001e8 ea00001e b |$L37414|
001ec |$L37460|
; 365 :
; 366 : case 'u':
; 367 : pOutputNumDecimal(va_arg(vl, unsigned long));
001ec e59d3000 ldr r3, [sp]
001f0 e2833004 add r3, r3, #4
001f4 e58d3000 str r3, [sp]
001f8 e59d3000 ldr r3, [sp]
001fc e2433004 sub r3, r3, #4
00200 e5930000 ldr r0, [r3]
00204 eb000000 bl pOutputNumDecimal
; 368 : break;
00208 ea000016 b |$L37414|
0020c |$L37468|
; 369 :
; 370 : case 's':
; 371 : OutputString(va_arg(vl, char *));
0020c e59d3000 ldr r3, [sp]
00210 e2833004 add r3, r3, #4
00214 e58d3000 str r3, [sp]
00218 e59d3000 ldr r3, [sp]
0021c e2433004 sub r3, r3, #4
00220 e5930000 ldr r0, [r3]
00224 eb000000 bl OutputString
; 372 : break;
00228 ea00000e b |$L37414|
0022c |$L37476|
; 373 :
; 374 : case '%':
; 375 : pOutputByte('%');
0022c e3a00025 mov r0, #0x25
00230 eb000000 bl pOutputByte
; 376 : break;
00234 ea00000b b |$L37414|
00238 |$L37477|
; 377 :
; 378 : case 'c':
; 379 : c = va_arg(vl, unsigned char);
00238 e59d3000 ldr r3, [sp]
0023c e2833004 add r3, r3, #4
00240 e58d3000 str r3, [sp]
00244 e59d3000 ldr r3, [sp]
00248 e2433004 sub r3, r3, #4
0024c e5d33000 ldrb r3, [r3]
00250 e5cd3004 strb r3, [sp, #4]
; 380 : pOutputByte(c);
00254 e5dd0004 ldrb r0, [sp, #4]
00258 eb000000 bl pOutputByte
; 381 : break;
0025c ea000001 b |$L37414|
00260 |$L37485|
; 382 :
; 383 : default:
; 384 : pOutputByte(' ');
00260 e3a00020 mov r0, #0x20
00264 eb000000 bl pOutputByte
00268 |$L37414|
; 385 : break;
; 386 : }
; 387 : break;
00268 ea000003 b |$L37408|
0026c |$L37486|
; 388 :
; 389 : case '\n':
; 390 : pOutputByte('\r');
0026c e3a0000d mov r0, #0xD
00270 eb000000 bl pOutputByte
00274 |$L37487|
; 391 : // fall through
; 392 :
; 393 : default:
; 394 : pOutputByte(c);
00274 e5dd0004 ldrb r0, [sp, #4]
00278 eb000000 bl pOutputByte
0027c |$L37408|
; 395 : }
; 396 : }
0027c eaffff69 b |$L37405|
00280 |$L37406|
; 397 :
; 398 : pOutputByte(0);
00280 e3a00000 mov r0, #0
00284 eb000000 bl pOutputByte
; 399 : c = szSprintf - pBuf;
00288 e59f303c ldr r3, [pc, #0x3C]
0028c e5932000 ldr r2, [r3]
00290 e59d3020 ldr r3, [sp, #0x20]
00294 e0423003 sub r3, r2, r3
00298 e20330ff and r3, r3, #0xFF
0029c e5cd3004 strb r3, [sp, #4]
; 400 : szSprintf = 0;
002a0 e59f2024 ldr r2, [pc, #0x24]
002a4 e3a03000 mov r3, #0
002a8 e5823000 str r3, [r2]
; 401 :
; 402 : va_end(vl);
002ac e3a03000 mov r3, #0
002b0 e58d3000 str r3, [sp]
; 403 :
; 404 : return (c);
002b4 e5dd3004 ldrb r3, [sp, #4]
002b8 e58d300c str r3, [sp, #0xC]
002bc e59d000c ldr r0, [sp, #0xC]
; 405 : }
002c0 e28dd018 add sp, sp, #0x18
002c4 e89d6000 ldmia sp, {sp, lr}
002c8 e12fff1e bx lr
002cc |$L37640|
002cc 00000000 DCD |szSprintf|
002d0 |$M37636|
ENDP ; |FormatString|
IMPORT |OEMWriteDebugByte|
00000 AREA |.text| { |pOutputByte| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$pOutputByte|, PDATA, SELECTION=5, ASSOC=|.text| { |pOutputByte| } ; comdat associative
|$T37646| DCD |$L37645|
DCD 0x40001603
; Function compile flags: /Ods
00000 AREA |.text| { |pOutputByte| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |pOutputByte| PROC
; 417 : {
00000 |$L37645|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c |$M37643|
; 418 : if (szSprintf)
0000c e59f3040 ldr r3, [pc, #0x40]
00010 e5933000 ldr r3, [r3]
00014 e3530000 cmp r3, #0
00018 0a000009 beq |$L37492|
; 419 : *szSprintf++ = c;
0001c e1dd20d8 ldrsb r2, [sp, #8]
00020 e59f302c ldr r3, [pc, #0x2C]
00024 e5933000 ldr r3, [r3]
00028 e5c32000 strb r2, [r3]
0002c e59f3020 ldr r3, [pc, #0x20]
00030 e5933000 ldr r3, [r3]
00034 e2832001 add r2, r3, #1
00038 e59f3014 ldr r3, [pc, #0x14]
0003c e5832000 str r2, [r3]
; 420 : else
00040 ea000001 b |$L37493|
00044 |$L37492|
; 421 : OEMWriteDebugByte(c);
00044 e5dd0008 ldrb r0, [sp, #8]
00048 eb000000 bl OEMWriteDebugByte
0004c |$L37493|
; 422 : }
0004c e89d6000 ldmia sp, {sp, lr}
00050 e12fff1e bx lr
00054 |$L37648|
00054 00000000 DCD |szSprintf|
00058 |$M37644|
ENDP ; |pOutputByte|
00000 AREA |.text| { |pOutputNumHex| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$pOutputNumHex|, PDATA, SELECTION=5, ASSOC=|.text| { |pOutputNumHex| } ; comdat associative
|$T37654| DCD |$L37653|
DCD 0x40002603
; Function compile flags: /Ods
00000 AREA |.text| { |pOutputNumHex| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |pOutputNumHex| PROC
; 435 : {
00000 |$L37653|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c |$M37651|
; 436 : if (depth)
0000c e59d300c ldr r3, [sp, #0xC]
00010 e3530000 cmp r3, #0
00014 0a000002 beq |$L37499|
; 437 : depth--;
00018 e59d300c ldr r3, [sp, #0xC]
0001c e2433001 sub r3, r3, #1
00020 e58d300c str r3, [sp, #0xC]
00024 |$L37499|
; 438 :
; 439 : if ((n & ~0xf) || depth)
00024 e59d2008 ldr r2, [sp, #8]
00028 e3e0300f mvn r3, #0xF
0002c e1120003 tst r2, r3
00030 1a000002 bne |$L37501|
00034 e59d300c ldr r3, [sp, #0xC]
00038 e3530000 cmp r3, #0
0003c 0a000006 beq |$L37500|
00040 |$L37501|
; 440 : {
; 441 : pOutputNumHex(n >> 4, depth);
00040 e59d100c ldr r1, [sp, #0xC]
00044 e59d3008 ldr r3, [sp, #8]
00048 e1a00223 mov r0, r3, lsr #4
0004c eb000000 bl pOutputNumHex
; 442 : n &= 0xf;
00050 e59d3008 ldr r3, [sp, #8]
00054 e203300f and r3, r3, #0xF
00058 e58d3008 str r3, [sp, #8]
0005c |$L37500|
; 443 : }
; 444 :
; 445 : if (n < 10)
0005c e59d3008 ldr r3, [sp, #8]
00060 e353000a cmp r3, #0xA
00064 2a000004 bcs |$L37502|
; 446 : pOutputByte((unsigned char)(n + '0'));
00068 e59d3008 ldr r3, [sp, #8]
0006c e2833030 add r3, r3, #0x30
00070 e20300ff and r0, r3, #0xFF
00074 eb000000 bl pOutputByte
; 447 : else
00078 ea000004 b |$L37504|
0007c |$L37502|
; 448 : pOutputByte((unsigned char)(n - 10 + 'A'));
0007c e59d3008 ldr r3, [sp, #8]
00080 e243300a sub r3, r3, #0xA
00084 e2833041 add r3, r3, #0x41
00088 e20300ff and r0, r3, #0xFF
0008c eb000000 bl pOutputByte
00090 |$L37504|
; 449 : }
00090 e89d6000 ldmia sp, {sp, lr}
00094 e12fff1e bx lr
00098 |$M37652|
ENDP ; |pOutputNumHex|
IMPORT |__rt_udiv|
00000 AREA |.text| { |pOutputNumDecimal| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$pOutputNumDecimal|, PDATA, SELECTION=5, ASSOC=|.text| { |pOutputNumDecimal| } ; comdat associative
|$T37662| DCD |$L37661|
DCD 0x40001403
; Function compile flags: /Ods
00000 AREA |.text| { |pOutputNumDecimal| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |pOutputNumDecimal| PROC
; 461 : {
00000 |$L37661|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c |$M37659|
; 462 : if (n >= 10)
0000c e59d3008 ldr r3, [sp, #8]
00010 e353000a cmp r3, #0xA
00014 3a000007 bcc |$L37509|
; 463 : {
; 464 : pOutputNumDecimal(n / 10);
00018 e59d1008 ldr r1, [sp, #8]
0001c e3a0000a mov r0, #0xA
00020 eb000000 bl __rt_udiv
00024 eb000000 bl pOutputNumDecimal
; 465 : n %= 10;
00028 e59d1008 ldr r1, [sp, #8]
0002c e3a0000a mov r0, #0xA
00030 eb000000 bl __rt_udiv
00034 e58d1008 str r1, [sp, #8]
00038 |$L37509|
; 466 : }
; 467 :
; 468 : pOutputByte((unsigned char)(n + '0'));
00038 e59d3008 ldr r3, [sp, #8]
0003c e2833030 add r3, r3, #0x30
00040 e20300ff and r0, r3, #0xFF
00044 eb000000 bl pOutputByte
; 469 : }
00048 e89d6000 ldmia sp, {sp, lr}
0004c e12fff1e bx lr
00050 |$M37660|
ENDP ; |pOutputNumDecimal|
00000 AREA |.text| { |OutputString| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OutputString|, PDATA, SELECTION=5, ASSOC=|.text| { |OutputString| } ; comdat associative
|$T37669| DCD |$L37668|
DCD 0x40001a04
; Function compile flags: /Ods
00000 AREA |.text| { |OutputString| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OutputString| PROC
; 482 : {
00000 |$L37668|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd004 sub sp, sp, #4
00010 |$M37666|
00010 |$L37515|
; 483 : while (*s)
00010 e59d300c ldr r3, [sp, #0xC]
00014 e5d33000 ldrb r3, [r3]
00018 e3530000 cmp r3, #0
0001c 0a00000e beq |$L37516|
; 484 : {
; 485 : if (*s == '\n')
00020 e59d300c ldr r3, [sp, #0xC]
00024 e5d33000 ldrb r3, [r3]
00028 e353000a cmp r3, #0xA
0002c 1a000001 bne |$L37517|
; 486 : OEMWriteDebugByte('\r');
00030 e3a0000d mov r0, #0xD
00034 eb000000 bl OEMWriteDebugByte
00038 |$L37517|
; 487 :
; 488 : OEMWriteDebugByte(*s++);
00038 e59d300c ldr r3, [sp, #0xC]
0003c e5d33000 ldrb r3, [r3]
00040 e5cd3000 strb r3, [sp]
00044 e5dd0000 ldrb r0, [sp]
00048 eb000000 bl OEMWriteDebugByte
0004c e59d300c ldr r3, [sp, #0xC]
00050 e2833001 add r3, r3, #1
00054 e58d300c str r3, [sp, #0xC]
; 489 : }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -