📄 xllp_logmessage.cod
字号:
00048 e3500025 cmp r0, #0x25
; 263 : }
; 264 : break;
; 265 : default:
; 266 : PutByte(c, pBD);
; 267 : break;
0004c 1a000044 bne |$L1493|
00050 e4d74001 ldrb r4, [r7], #1
00054 e3a09000 mov r9, #0
00058 e3a08000 mov r8, #0
0005c e3540023 cmp r4, #0x23
00060 04d74001 ldreqb r4, [r7], #1
00064 e3540030 cmp r4, #0x30
00068 1a000007 bne |$L1490|
; 189 : {
; 190 : case '%':
; 191 : width = 0;
; 192 : fill_c = '\0';
; 193 : c = *pf++;
; 194 : // # spec is currently not implemented but recognized and silently ignored
; 195 : if (c == '#')
; 196 : c = *pf++;
; 197 : if (c == '0')
; 198 : {
; 199 : fill_c = c;
0006c e1a08004 mov r8, r4
; 200 : c = *pf++;
00070 ea000004 b |$L1491|
00074 |$L1217|
; 201 : }
; 202 : // Leading zero and width spec is implemented only for x, u, & d formats.
; 203 : // It is recognized but silently ignored for other formats.
; 204 : while ((c >= '0') && (c <= '9'))
00074 e3530039 cmp r3, #0x39
00078 8a000006 bhi |$L1469|
; 205 : {
; 206 : width = (width*10) + (c & 0xf);
; 207 : c = *pf++;
0007c e203200f and r2, r3, #0xF
00080 e0893109 add r3, r9, r9, lsl #2
00084 e0829083 add r9, r2, r3, lsl #1
00088 |$L1491|
00088 e4d74001 ldrb r4, [r7], #1
0008c |$L1490|
0008c e3540030 cmp r4, #0x30
00090 e1a03004 mov r3, r4
00094 2afffff6 bcs |$L1217|
00098 |$L1469|
; 208 : }
; 209 : switch (c)
00098 e3540063 cmp r4, #0x63
0009c ca000033 bgt |$L1452|
000a0 0a00002d beq |$L1301|
000a4 e3540025 cmp r4, #0x25
000a8 0a000029 beq |$L1300|
000ac e3540042 cmp r4, #0x42
000b0 0a00001e beq |$L1247|
000b4 e3540048 cmp r4, #0x48
000b8 0a000014 beq |$L1263|
000bc e3540058 cmp r4, #0x58
000c0 0a000009 beq |$L1231|
000c4 e3540062 cmp r4, #0x62
000c8 1a000032 bne |$L1309|
; 217 : case 'b':
; 218 : PutHex(va_arg(valist, unsigned long), 2, 0, fill_c, pBD);
000cc e2866004 add r6, r6, #4
000d0 e5160004 ldr r0, [r6, #-4]
000d4 e1a03008 mov r3, r8
000d8 e3a02000 mov r2, #0
000dc e3a01002 mov r1, #2
000e0 e58da000 str r10, [sp]
000e4 eb000000 bl PutHex
; 219 : break;
000e8 ea000068 b |$L1468|
000ec |$L1231|
; 214 : case 'X':
; 215 : PutHex(va_arg(valist, unsigned long), width, 1, fill_c, pBD);
000ec e2866004 add r6, r6, #4
000f0 e5160004 ldr r0, [r6, #-4]
000f4 e28de004 add lr, sp, #4
000f8 e1a03008 mov r3, r8
000fc e3a02001 mov r2, #1
00100 e1a01009 mov r1, r9
00104 e58de000 str lr, [sp]
00108 eb000000 bl PutHex
; 216 : break;
0010c ea00005f b |$L1468|
00110 |$L1263|
; 226 : case 'H':
; 227 : PutHex(va_arg(valist, unsigned long), 4, 1, fill_c, pBD);
00110 e2866004 add r6, r6, #4
00114 e5160004 ldr r0, [r6, #-4]
00118 e1a03008 mov r3, r8
0011c e3a02001 mov r2, #1
00120 e3a01004 mov r1, #4
00124 e58db000 str r11, [sp]
00128 eb000000 bl PutHex
; 228 : break;
0012c ea000057 b |$L1468|
00130 |$L1247|
; 220 : case 'B':
; 221 : PutHex(va_arg(valist, unsigned long), 2, 1, fill_c, pBD);
00130 e2866004 add r6, r6, #4
00134 e5160004 ldr r0, [r6, #-4]
00138 e28de004 add lr, sp, #4
0013c e1a03008 mov r3, r8
00140 e3a02001 mov r2, #1
00144 e3a01002 mov r1, #2
00148 e58de000 str lr, [sp]
0014c eb000000 bl PutHex
; 222 : break;
00150 ea00004e b |$L1468|
00154 |$L1300|
; 250 : case '%':
; 251 : PutByte('%', pBD);
00154 e3a00025 mov r0, #0x25
; 252 : break;
00158 ea000001 b |$L1493|
0015c |$L1301|
; 253 : case 'c':
; 254 : c = va_arg(valist, unsigned char);
0015c e2866004 add r6, r6, #4
; 255 : PutByte(c, pBD);
00160 e5560004 ldrb r0, [r6, #-4]
00164 |$L1493|
00164 e28d1004 add r1, sp, #4
00168 eb000000 bl PutByte
; 256 : break;
0016c ea000047 b |$L1468|
00170 |$L1452|
; 208 : }
; 209 : switch (c)
00170 e3540064 cmp r4, #0x64
00174 0a000033 beq |$L1271|
00178 e3540068 cmp r4, #0x68
0017c 0a000028 beq |$L1255|
00180 e3540073 cmp r4, #0x73
00184 0a000017 beq |$L1292|
00188 e3540075 cmp r4, #0x75
0018c 0a000012 beq |$L1284|
00190 e3540078 cmp r4, #0x78
00194 0a000007 beq |$L1223|
00198 |$L1309|
; 257 : default:
; 258 : PutByte('%', pBD);
00198 e28d1004 add r1, sp, #4
0019c e3a00025 mov r0, #0x25
001a0 eb000000 bl PutByte
; 259 : PutByte(c, pBD);
001a4 e28d1004 add r1, sp, #4
001a8 e1a00004 mov r0, r4
001ac eb000000 bl PutByte
; 260 : // ignore the value argument too so any remaining items aren't messed up
; 261 : va_arg(valist, unsigned long);
; 262 : break;
001b0 e2866004 add r6, r6, #4
001b4 ea000035 b |$L1468|
001b8 |$L1223|
; 210 : {
; 211 : case 'x':
; 212 : PutHex(va_arg(valist, unsigned long), width, 0, fill_c, pBD);
001b8 e2866004 add r6, r6, #4
001bc e5160004 ldr r0, [r6, #-4]
001c0 e28de004 add lr, sp, #4
001c4 e1a03008 mov r3, r8
001c8 e3a02000 mov r2, #0
001cc e1a01009 mov r1, r9
001d0 e58de000 str lr, [sp]
001d4 eb000000 bl PutHex
; 213 : break;
001d8 ea00002c b |$L1468|
001dc |$L1284|
; 242 : }
; 243 : break;
; 244 : case 'u':
; 245 : PutDecimal(va_arg(valist, unsigned long), width, fill_c, pBD);
001dc e2866004 add r6, r6, #4
001e0 e5160004 ldr r0, [r6, #-4]
; 246 : break;
001e4 ea000025 b |$L1494|
001e8 |$L1292|
; 247 : case 's':
; 248 : PutString(va_arg(valist, char *), pBD);
001e8 e2866004 add r6, r6, #4
001ec e5164004 ldr r4, [r6, #-4]
001f0 e5d43000 ldrb r3, [r4]
001f4 e3530000 cmp r3, #0
001f8 0a000027 beq |$L1220|
001fc |$L1456|
001fc e28d1004 add r1, sp, #4
00200 e1a00003 mov r0, r3
00204 eb000000 bl PutByte
00208 e3500000 cmp r0, #0
0020c e2844001 add r4, r4, #1
00210 0a00001e beq |$L1468|
00214 e5d43000 ldrb r3, [r4]
00218 e3530000 cmp r3, #0
0021c 1afffff6 bne |$L1456|
; 249 : break;
00220 ea00001a b |$L1468|
00224 |$L1255|
; 223 : case 'h':
; 224 : PutHex(va_arg(valist, unsigned long), 4, 0, fill_c, pBD);
00224 e2866004 add r6, r6, #4
00228 e5160004 ldr r0, [r6, #-4]
0022c e28de004 add lr, sp, #4
00230 e1a03008 mov r3, r8
00234 e3a02000 mov r2, #0
00238 e3a01004 mov r1, #4
0023c e58de000 str lr, [sp]
00240 eb000000 bl PutHex
; 225 : break;
00244 ea000011 b |$L1468|
00248 |$L1271|
; 229 : case 'd':
; 230 : {
; 231 : long d;
; 232 : d = va_arg(valist, long);
00248 e2866004 add r6, r6, #4
0024c e5163004 ldr r3, [r6, #-4]
00250 e1b04003 movs r4, r3
; 233 : if (d < 0)
00254 5a000004 bpl |$L1280|
; 234 : {
; 235 : PutByte('-', pBD);
00258 e28d1004 add r1, sp, #4
0025c e3a0002d mov r0, #0x2D
00260 eb000000 bl PutByte
; 236 : d = d * -1;
00264 e2644000 rsb r4, r4, #0
; 237 : }
; 238 : else
00268 ea000003 b |$L1282|
0026c |$L1280|
; 239 : if (width != 0)
0026c e3590000 cmp r9, #0
; 240 : PutByte(' ', pBD);
00270 128d1004 addne r1, sp, #4
00274 13a00020 movne r0, #0x20
00278 1b000000 blne PutByte
0027c |$L1282|
; 241 : PutDecimal((unsigned long)d, width, fill_c, pBD);
0027c e1a00004 mov r0, r4
00280 |$L1494|
00280 e28d3004 add r3, sp, #4
00284 e1a02008 mov r2, r8
00288 e1a01009 mov r1, r9
0028c eb000000 bl PutDecimal
00290 |$L1468|
; 263 : }
; 264 : break;
; 265 : default:
; 266 : PutByte(c, pBD);
; 267 : break;
00290 e59d1004 ldr r1, [sp, #4]
00294 e59de008 ldr lr, [sp, #8]
00298 e59d500c ldr r5, [sp, #0xC]
0029c |$L1220|
0029c e5d73000 ldrb r3, [r7]
002a0 e3530000 cmp r3, #0
002a4 1affff64 bne |$L1206|
002a8 |$L1470|
; 268 : }
; 269 : }
; 270 : if (pBD->current_bytes == pBD->max_bytes)
002a8 e15e0001 cmp lr, r1
002ac |$L1489|
002ac 1a000008 bne |$L1318|
; 271 : {
; 272 : pBD->p[pBD->current_bytes++] = '>';
002b0 e3a0303e mov r3, #0x3E
002b4 e7c5300e strb r3, [r5, +lr]
002b8 e28e3001 add r3, lr, #1
; 273 : pBD->p[pBD->current_bytes++] = '\r';
002bc e3a0200d mov r2, #0xD
002c0 e7c52003 strb r2, [r5, +r3]
002c4 e2833001 add r3, r3, #1
; 274 : pBD->p[pBD->current_bytes++] = '\n';
002c8 e3a0200a mov r2, #0xA
002cc e7c52003 strb r2, [r5, +r3]
002d0 e283e001 add lr, r3, #1
002d4 |$L1318|
; 275 : }
; 276 : pBD->p[pBD->current_bytes] = '\0';
002d4 e3a03000 mov r3, #0
002d8 e7c5300e strb r3, [r5, +lr]
; 277 : return(pBD->current_bytes);
002dc e1a0000e mov r0, lr
; 278 : } // xllp_vsnprintf
002e0 e28dd010 add sp, sp, #0x10
002e4 e8bd4ff0 ldmia sp!, {r4 - r11, lr}
002e8 e12fff1e bx lr
002ec |$M1496|
ENDP ; |xllp_vsnprintf|
EXPORT |xllp_snprintf|
00000 AREA |.text| { |xllp_snprintf| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$xllp_snprintf|, PDATA, SELECTION=5, ASSOC=|.text| { |xllp_snprintf| } ; comdat associative
|$T1510| DCD |$L1509|
DCD 0x40000803
; Function compile flags: /Ogsy
00000 AREA |.text| { |xllp_snprintf| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |xllp_snprintf| PROC
; 281 : {
00000 |$L1509|
00000 e1a0c00d mov r12, sp
00004 e92d000f stmdb sp!, {r0 - r3}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c |$M1507|
0000c e58d2010 str r2, [sp, #0x10]
; 282 : va_list valist;
; 283 : unsigned long ret;
; 284 : va_start(valist, pFormat);
; 285 : ret = xllp_vsnprintf(pBuf, max_bytes, pFormat, valist);
00010 e28d3014 add r3, sp, #0x14
00014 eb000000 bl xllp_vsnprintf
; 286 : va_end(valist);
; 287 : return(ret);
; 288 : } // xllp_snprintf
00018 e89d6000 ldmia sp, {sp, lr}
0001c e12fff1e bx lr
00020 |$M1508|
ENDP ; |xllp_snprintf|
EXPORT |xllp_LogMessage|
IMPORT |OSDS_LogMessage|
00000 AREA |.text| { |xllp_LogMessage| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$xllp_LogMessage|, PDATA, SELECTION=5, ASSOC=|.text| { |xllp_LogMessage| } ; comdat associative
|$T1522| DCD |$L1521|
DCD 0x40001704
; Function compile flags: /Ogsy
00000 AREA |.text| { |xllp_LogMessage| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |xllp_LogMessage| PROC
; 291 : {
00000 |$L1521|
00000 e1a0c00d mov r12, sp
00004 e92d000f stmdb sp!, {r0 - r3}
00008 e92d5010 stmdb sp!, {r4, r12, lr}
0000c e24dd088 sub sp, sp, #0x88
00010 |$M1519|
00010 e58d0094 str r0, [sp, #0x94]
00014 e59f303c ldr r3, [pc, #0x3C]
00018 e5933000 ldr r3, [r3]
0001c e58d3084 str r3, [sp, #0x84]
; 292 : unsigned char MsgBuf[XLLP_LOGMESSAGE_MAX_BYTES + 4];
; 293 : va_list valist;
; 294 : unsigned long ret;
; 295 :
; 296 : va_start(valist, pFormat);
; 297 : ret = xllp_vsnprintf(MsgBuf, sizeof(MsgBuf), pFormat, valist);
00020 e1a02000 mov r2, r0
00024 e28d0000 add r0, sp, #0
00028 e28d3098 add r3, sp, #0x98
0002c e3a01084 mov r1, #0x84
00030 eb000000 bl xllp_vsnprintf
00034 e1a04000 mov r4, r0
; 298 : OSDS_LogMessage(MsgBuf);
00038 e28d0000 add r0, sp, #0
0003c eb000000 bl OSDS_LogMessage
; 299 : va_end(valist);
; 300 : return(ret);
00040 e59d0084 ldr r0, [sp, #0x84]
00044 eb000000 bl __security_check_cookie
00048 e1a00004 mov r0, r4
; 301 : } // xllp_LogMessage
0004c e28dd088 add sp, sp, #0x88
00050 e89d6010 ldmia sp, {r4, sp, lr}
00054 e12fff1e bx lr
00058 |$L1524|
00058 00000000 DCD |__security_cookie|
0005c |$M1520|
ENDP ; |xllp_LogMessage|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -