⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xllp_logmessage.cod

📁 pxa270为硬件平台的wince操作系统XLLP驱动源码
💻 COD
📖 第 1 页 / 共 2 页
字号:
  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 + -