📄 format.cod
字号:
; 231 : pOutputNumDecimal(va_arg(vl, unsigned long));
000e8 e2855004 add r5, r5, #4
000ec e5150004 ldr r0, [r5, #-4]
000f0 eb000000 bl pOutputNumDecimal
; 232 : break;
000f4 ea00000d b |$L35896|
000f8 |$L35936|
; 214 :
; 215 : case 'd':
; 216 : {
; 217 : long l;
; 218 :
; 219 : l = va_arg(vl, long);
000f8 e2855004 add r5, r5, #4
000fc e5150004 ldr r0, [r5, #-4]
00100 e1b04000 movs r4, r0
; 220 :
; 221 : if (l < 0)
00104 5a000002 bpl |$L35945|
; 222 : {
; 223 : pOutputByte('-');
00108 e3a0002d mov r0, #0x2D
0010c eb000000 bl pOutputByte
; 224 : l = -l;
00110 e2644000 rsb r4, r4, #0
00114 |$L35945|
; 225 : }
; 226 : pOutputNumDecimal((unsigned long)l);
00114 e1a00004 mov r0, r4
; 227 : }
; 228 : break;
; 229 :
; 230 : case 'u':
; 231 : pOutputNumDecimal(va_arg(vl, unsigned long));
00118 eb000000 bl pOutputNumDecimal
; 232 : break;
0011c ea000003 b |$L35896|
00120 |$L35973|
; 251 : }
; 252 : break;
; 253 :
; 254 : case '\n':
; 255 : pOutputByte('\r');
00120 e3a0000d mov r0, #0xD
00124 eb000000 bl pOutputByte
00128 |$L35974|
; 256 : // fall through
; 257 :
; 258 : default:
; 259 : pOutputByte(c);
00128 e1a00004 mov r0, r4
0012c |$L36228|
0012c eb000000 bl pOutputByte
00130 |$L35896|
; 189 :
; 190 : while (*sz)
00130 e1d620b0 ldrh r2, [r6]
00134 e1a00802 mov r0, r2, lsl #16
00138 e1b01820 movs r1, r0, lsr #16
0013c 1affffb5 bne |$L35893|
; 260 : }
; 261 : }
; 262 :
; 263 : va_end(vl);
; 264 : }
00140 e89d6070 ldmia sp, {r4 - r6, sp, lr}
00144 e12fff1e bx lr
00148 |$M36233|
ENDP ; |NKDbgPrintfW|
EXPORT |FormatString|
00000 AREA |.text| { |FormatString| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$FormatString|, PDATA, SELECTION=5, ASSOC=|.text| { |FormatString| } ; comdat associative
|$T36255| DCD |FormatString|
DCD 0x40005903
; Function compile flags: /Ogsy
00000 AREA |.text| { |FormatString| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |FormatString| PROC
; 294 : {
00000 e1a0c00d mov r12, sp
00004 e92d000f stmdb sp!, {r0 - r3}
00008 e92d51f0 stmdb sp!, {r4 - r8, r12, lr}
0000c |$M36253|
0000c e1a08000 mov r8, r0
00010 e1a06001 mov r6, r1
; 295 : unsigned char c;
; 296 : va_list vl;
; 297 :
; 298 : va_start(vl, sz);
; 299 :
; 300 : szSprintf = pBuf;
00014 e59f7144 ldr r7, [pc, #0x144]
00018 e28d5024 add r5, sp, #0x24
0001c e5878000 str r8, [r7]
; 301 :
; 302 : while (*sz)
00020 ea000042 b |$L35991|
00024 |$L35988|
; 303 : {
; 304 : c = *sz++;
; 305 :
; 306 : switch (c)
; 307 : {
00024 e20400ff and r0, r4, #0xFF
00028 e2866001 add r6, r6, #1
0002c e350000a cmp r0, #0xA
00030 0a00003a beq |$L36069|
00034 e3500025 cmp r0, #0x25
00038 1a00003a bne |$L36070|
; 308 : case (unsigned char)'%':
; 309 : c = *sz++;
0003c e4d60001 ldrb r0, [r6], #1
00040 e58d6020 str r6, [sp, #0x20]
; 310 :
; 311 : switch (c)
; 312 : {
00044 e3500063 cmp r0, #0x63
00048 ca000013 bgt |$L36238|
0004c 0a00000f beq |$L36060|
00050 e3500025 cmp r0, #0x25
00054 0a00000b beq |$L36059|
00058 e3500042 cmp r0, #0x42
0005c 0a000007 beq |$L36008|
00060 e3500048 cmp r0, #0x48
00064 0a000003 beq |$L36016|
00068 e3500058 cmp r0, #0x58
0006c 1a000012 bne |$L36068|
; 324 :
; 325 : case 'X':
; 326 : pOutputNumHex(va_arg(vl, unsigned long), 8);
00070 e3a01008 mov r1, #8
; 327 : break;
00074 ea000013 b |$L36252|
00078 |$L36016|
; 320 :
; 321 : case 'H':
; 322 : pOutputNumHex(va_arg(vl, unsigned long), 4);
00078 e3a01004 mov r1, #4
; 323 : break;
0007c ea000011 b |$L36252|
00080 |$L36008|
; 316 :
; 317 : case 'B':
; 318 : pOutputNumHex(va_arg(vl, unsigned long), 2);
00080 e3a01002 mov r1, #2
; 319 : break;
00084 ea00000f b |$L36252|
00088 |$L36059|
; 351 :
; 352 : case '%':
; 353 : pOutputByte('%');
00088 e3a00025 mov r0, #0x25
; 354 : break;
0008c ea000026 b |$L36249|
00090 |$L36060|
; 355 :
; 356 : case 'c':
; 357 : c = va_arg(vl, unsigned char);
00090 e2855004 add r5, r5, #4
; 358 : pOutputByte(c);
00094 e5550004 ldrb r0, [r5, #-4]
; 359 : break;
00098 ea000023 b |$L36249|
0009c |$L36238|
; 310 :
; 311 : switch (c)
; 312 : {
0009c e3500064 cmp r0, #0x64
000a0 0a000014 beq |$L36032|
000a4 e3500073 cmp r0, #0x73
000a8 0a00000e beq |$L36051|
000ac e3500075 cmp r0, #0x75
000b0 0a000008 beq |$L36043|
000b4 e3500078 cmp r0, #0x78
000b8 0a000001 beq |$L36000|
000bc |$L36068|
; 360 :
; 361 : default:
; 362 : pOutputByte(' ');
000bc e3a00020 mov r0, #0x20
; 363 : break;
000c0 ea000019 b |$L36249|
000c4 |$L36000|
; 313 : case 'x':
; 314 : pOutputNumHex(va_arg(vl, unsigned long), 0);
000c4 e3a01000 mov r1, #0
000c8 |$L36252|
000c8 e2855004 add r5, r5, #4
000cc e5150004 ldr r0, [r5, #-4]
000d0 eb000000 bl pOutputNumHex
; 315 : break;
000d4 ea000015 b |$L35991|
000d8 |$L36043|
; 341 : }
; 342 : break;
; 343 :
; 344 : case 'u':
; 345 : pOutputNumDecimal(va_arg(vl, unsigned long));
000d8 e2855004 add r5, r5, #4
000dc e5150004 ldr r0, [r5, #-4]
000e0 eb000000 bl pOutputNumDecimal
; 346 : break;
000e4 ea000011 b |$L35991|
000e8 |$L36051|
; 347 :
; 348 : case 's':
; 349 : OutputString(va_arg(vl, char *));
000e8 e2855004 add r5, r5, #4
000ec e5150004 ldr r0, [r5, #-4]
000f0 eb000000 bl OutputString
; 350 : break;
000f4 ea00000d b |$L35991|
000f8 |$L36032|
; 328 :
; 329 : case 'd':
; 330 : {
; 331 : long l;
; 332 :
; 333 : l = va_arg(vl, long);
000f8 e2855004 add r5, r5, #4
000fc e5150004 ldr r0, [r5, #-4]
00100 e1b04000 movs r4, r0
; 334 :
; 335 : if (l < 0)
00104 5a000002 bpl |$L36041|
; 336 : {
; 337 : pOutputByte('-');
00108 e3a0002d mov r0, #0x2D
0010c eb000000 bl pOutputByte
; 338 : l = -l;
00110 e2644000 rsb r4, r4, #0
00114 |$L36041|
; 339 : }
; 340 : pOutputNumDecimal((unsigned long)l);
00114 e1a00004 mov r0, r4
; 341 : }
; 342 : break;
; 343 :
; 344 : case 'u':
; 345 : pOutputNumDecimal(va_arg(vl, unsigned long));
00118 eb000000 bl pOutputNumDecimal
; 346 : break;
0011c ea000003 b |$L35991|
00120 |$L36069|
; 364 : }
; 365 : break;
; 366 :
; 367 : case '\n':
; 368 : pOutputByte('\r');
00120 e3a0000d mov r0, #0xD
00124 eb000000 bl pOutputByte
00128 |$L36070|
; 369 : // fall through
; 370 :
; 371 : default:
; 372 : pOutputByte(c);
00128 e1a00004 mov r0, r4
0012c |$L36249|
0012c eb000000 bl pOutputByte
00130 |$L35991|
; 301 :
; 302 : while (*sz)
00130 e5d64000 ldrb r4, [r6]
00134 e31400ff tst r4, #0xFF
00138 1affffb9 bne |$L35988|
; 373 : }
; 374 : }
; 375 :
; 376 : pOutputByte(0);
0013c e3a00000 mov r0, #0
00140 eb000000 bl pOutputByte
; 377 : c = szSprintf - pBuf;
00144 e5973000 ldr r3, [r7]
; 378 : szSprintf = 0;
00148 e3a01000 mov r1, #0
0014c e0430008 sub r0, r3, r8
00150 e5871000 str r1, [r7]
00154 e20000ff and r0, r0, #0xFF
; 379 :
; 380 : va_end(vl);
; 381 :
; 382 : return (c);
; 383 : }
00158 e89d61f0 ldmia sp, {r4 - r8, sp, lr}
0015c e12fff1e bx lr
00160 |$L36257|
00160 00000000 DCD |szSprintf|
00164 |$M36254|
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
|$T36263| DCD |pOutputByte|
DCD 0x40000e01
; Function compile flags: /Ogsy
00000 AREA |.text| { |pOutputByte| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |pOutputByte| PROC
; 395 : {
00000 e52de004 str lr, [sp, #-4]!
00004 |$M36261|
00004 e1a02000 mov r2, r0
; 396 : if (szSprintf)
00008 e59f1024 ldr r1, [pc, #0x24]
0000c e5910000 ldr r0, [r1]
00010 e3500000 cmp r0, #0
; 397 : *szSprintf++ = c;
00014 14c02001 strneb r2, [r0], #1
00018 15810000 strne r0, [r1]
; 400 : }
0001c 18bd4000 ldmneia sp!, {lr}
00020 112fff1e bxne lr
; 398 : else
; 399 : OEMWriteDebugByte(c);
00024 e1a00002 mov r0, r2
00028 eb000000 bl OEMWriteDebugByte
; 400 : }
0002c e8bd4000 ldmia sp!, {lr}
00030 e12fff1e bx lr
00034 |$L36265|
00034 00000000 DCD |szSprintf|
00038 |$M36262|
ENDP ; |pOutputByte|
00000 AREA |.text| { |pOutputNumHex| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$pOutputNumHex|, PDATA, SELECTION=5, ASSOC=|.text| { |pOutputNumHex| } ; comdat associative
|$T36273| DCD |pOutputNumHex|
DCD 0x40001201
; Function compile flags: /Ogsy
00000 AREA |.text| { |pOutputNumHex| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |pOutputNumHex| PROC
; 413 : {
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M36271|
00004 e1a04000 mov r4, r0
; 414 : if (depth)
00008 e3510000 cmp r1, #0
; 415 : depth--;
0000c 12411001 subne r1, r1, #1
; 416 :
; 417 : if ((n & ~0xf) || depth)
00010 e3d4000f bics r0, r4, #0xF
00014 1a000001 bne |$L36084|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -