📄 parallel.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4237
TTL C:\WINCE500\PLATFORM\Ep93xx\Src\Bootloader\Common\.\parallel.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |BootHeader| [ DATA ]
EXPORT |BootTail| [ DATA ]
00000 AREA |.rdata|, DATA, READONLY
|BootTail| DCB 0x5a
DCB 0xa5
DCB 0xa
DCB 0x1a
|BootHeader| DCB 0xaa
DCB 0x55
DCB 0x55
DCB 0xaa
DCB 0x0
DCB 0x0
% 6
|EdbgVendorIds| DCW 0x0
DCW 0x0
DCD 0x4033
DCB 0x1
DCB 0x0
DCB "AD", 0x0
% 3
DCW 0x1050
DCW 0x940
DCD 0x4005
DCB 0x1
DCB 0x0
DCB "LS", 0x0
% 3
DCW 0x1050
DCW 0x940
DCD 0x2078
DCB 0x1
DCB 0x0
DCB "LS", 0x0
% 3
DCW 0x10ec
DCW 0x8029
DCD 0xc0f0
DCB 0x1
DCB 0x0
DCB "KS", 0x0
% 3
DCW 0x10ec
DCW 0x8129
DCD 0x0
DCB 0x4
DCB 0x0
DCB "RT", 0x0
% 3
DCW 0x10ec
DCW 0x8139
DCD 0x900b
DCB 0x4
DCB 0x0
DCB "RT", 0x0
% 3
DCW 0x10ec
DCW 0x8139
DCD 0xd0c9
DCB 0x4
DCB 0x0
DCB "RT", 0x0
% 3
DCW 0x10ec
DCW 0x8139
DCD 0xe04c
DCB 0x4
DCB 0x0
DCB "RT", 0x0
% 3
DCW 0x1186
DCW 0x1300
DCD 0x50ba
DCB 0x4
DCB 0x0
DCB "DL", 0x0
% 3
DCW 0x100b
DCW 0x20
DCD 0xa0cc
DCB 0x5
DCB 0x0
DCB "NG", 0x0
% 3
DCW 0x10b7
DCW 0x9050
DCD 0x6008
DCB 0x6
DCB 0x0
DCB "3C", 0x0
% 3
DCW 0x10b7
DCW 0x9200
DCD 0x476
DCB 0x6
DCB 0x0
DCB "3C", 0x0
% 3
DCW 0x8086
DCW 0x1039
DCD 0x4033
DCB 0x7
DCB 0x1
DCB "IN", 0x0
% 3
DCW 0x8086
DCW 0x103a
DCD 0x4033
DCB 0x7
DCB 0x1
DCB "IN", 0x0
% 3
DCW 0x8086
DCW 0x1051
DCD 0x4033
DCB 0x7
DCB 0x1
DCB "IN", 0x0
% 3
DCW 0x8086
DCW 0x1229
DCD 0x4033
DCB 0x7
DCB 0x1
DCB "IN", 0x0
% 3
DCW 0x8086
DCW 0x2449
DCD 0x4033
DCB 0x7
DCB 0x1
DCB "IN", 0x0
% 3
EXPORT |ParallelPortRead|
IMPORT |OEMParallelPortGetByte|
; File c:\wince500\platform\ep93xx\src\bootloader\common\parallel.c
00000 AREA |.text| { |ParallelPortRead| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ParallelPortRead|, PDATA, SELECTION=5, ASSOC=|.text| { |ParallelPortRead| } ; comdat associative
|$T38114| DCD |$L38113|
DCD 0x40001f04
; Function compile flags: /Ods
00000 AREA |.text| { |ParallelPortRead| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ParallelPortRead| PROC
; 72 : {
00000 |$L38113|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd00c sub sp, sp, #0xC
00010 |$M38111|
00010 |$L38051|
; 73 : //for(;;) { OEMParallelPortGetByte();}
; 74 :
; 75 : int result;
; 76 : while (cb && (result=OEMParallelPortGetByte()) != -1) {
00010 e59d3014 ldr r3, [sp, #0x14]
00014 e3530000 cmp r3, #0
00018 0a000011 beq |$L38052|
0001c eb000000 bl OEMParallelPortGetByte
00020 e58d0008 str r0, [sp, #8]
00024 e59d3008 ldr r3, [sp, #8]
00028 e58d3000 str r3, [sp]
0002c e59d3000 ldr r3, [sp]
00030 e3730001 cmn r3, #1
00034 0a00000a beq |$L38052|
; 77 : *pByteReceived++= (unsigned char)result;
00038 e59d3000 ldr r3, [sp]
0003c e20320ff and r2, r3, #0xFF
00040 e59d3018 ldr r3, [sp, #0x18]
00044 e5c32000 strb r2, [r3]
00048 e59d3018 ldr r3, [sp, #0x18]
0004c e2833001 add r3, r3, #1
00050 e58d3018 str r3, [sp, #0x18]
; 78 : cb--;
00054 e59d3014 ldr r3, [sp, #0x14]
00058 e2433001 sub r3, r3, #1
0005c e58d3014 str r3, [sp, #0x14]
; 79 : }
00060 eaffffea b |$L38051|
00064 |$L38052|
; 80 : return cb;
00064 e59d3014 ldr r3, [sp, #0x14]
00068 e58d3004 str r3, [sp, #4]
0006c e59d0004 ldr r0, [sp, #4]
; 81 : }
00070 e28dd00c add sp, sp, #0xC
00074 e89d6000 ldmia sp, {sp, lr}
00078 e12fff1e bx lr
0007c |$M38112|
ENDP ; |ParallelPortRead|
EXPORT |ParallelPortWrite|
IMPORT |OEMParallelPortSendByte|
00000 AREA |.text| { |ParallelPortWrite| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ParallelPortWrite|, PDATA, SELECTION=5, ASSOC=|.text| { |ParallelPortWrite| } ; comdat associative
|$T38122| DCD |$L38121|
DCD 0x40001904
; Function compile flags: /Ods
00000 AREA |.text| { |ParallelPortWrite| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ParallelPortWrite| PROC
; 111 : {
00000 |$L38121|
00000 e1a0c00d mov r12, sp
00004 e92d0003 stmdb sp!, {r0, r1}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd008 sub sp, sp, #8
00010 |$M38119|
00010 |$L38061|
; 112 : while (cb--)
00010 e59d3014 ldr r3, [sp, #0x14]
00014 e3530000 cmp r3, #0
00018 e59d3014 ldr r3, [sp, #0x14]
0001c e2433001 sub r3, r3, #1
00020 e58d3014 str r3, [sp, #0x14]
00024 0a000008 beq |$L38062|
; 113 : OEMParallelPortSendByte(*pByteSend++);
00028 e59d3010 ldr r3, [sp, #0x10]
0002c e5d33000 ldrb r3, [r3]
00030 e5cd3004 strb r3, [sp, #4]
00034 e5dd0004 ldrb r0, [sp, #4]
00038 eb000000 bl OEMParallelPortSendByte
0003c e59d3010 ldr r3, [sp, #0x10]
00040 e2833001 add r3, r3, #1
00044 e58d3010 str r3, [sp, #0x10]
00048 eafffff0 b |$L38061|
0004c |$L38062|
; 114 : return cb;
0004c e59d3014 ldr r3, [sp, #0x14]
00050 e58d3000 str r3, [sp]
00054 e59d0000 ldr r0, [sp]
; 115 : }
00058 e28dd008 add sp, sp, #8
0005c e89d6000 ldmia sp, {sp, lr}
00060 e12fff1e bx lr
00064 |$M38120|
ENDP ; |ParallelPortWrite|
EXPORT |ParallelPreDownload|
EXPORT |??_C@_01LFCBOECM@?4?$AA@| [ DATA ] ; `string'
IMPORT |EdbgOutputDebugString|
00000 AREA |.text| { |ParallelPreDownload| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ParallelPreDownload|, PDATA, SELECTION=5, ASSOC=|.text| { |ParallelPreDownload| } ; comdat associative
|$T38130| DCD |$L38129|
DCD 0x40008602
00000 AREA |.rdata| { |??_C@_01LFCBOECM@?4?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_01LFCBOECM@?4?$AA@| DCB ".", 0x0 ; `string'
; Function compile flags: /Ods
00000 AREA |.text| { |ParallelPreDownload| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ParallelPreDownload| PROC
; 126 : {
00000 |$L38129|
00000 e52de004 str lr, [sp, #-4]!
00004 e24dd034 sub sp, sp, #0x34
00008 |$M38127|
; 127 : unsigned char * pDestByte;
; 128 : unsigned int chksum;
; 129 : unsigned int uiTemp;
; 130 : int bootType;
; 131 : unsigned len;
; 132 : int i;
; 133 : int nReturn=0;
00008 e3a03000 mov r3, #0
0000c e58d3024 str r3, [sp, #0x24]
; 134 : unsigned char ParallelSendBuffer[2 + sizeof(int) + BOOT_TAIL_SIZE];
; 135 :
; 136 : EdbgOutputDebugString(".");
00010 e59f01fc ldr r0, [pc, #0x1FC]
00014 eb000000 bl EdbgOutputDebugString
; 137 : //
; 138 : // Prepare boot packet
; 139 : //
; 140 : pDestByte = ParallelSendBuffer;
00018 e28d3018 add r3, sp, #0x18
0001c e58d3004 str r3, [sp, #4]
; 141 : for (i = 0; i < BOOT_HEADER_SIZE; i++)
00020 e3a03000 mov r3, #0
00024 e58d3008 str r3, [sp, #8]
00028 ea000002 b |$L38076|
0002c |$L38077|
0002c e59d3008 ldr r3, [sp, #8]
00030 e2833001 add r3, r3, #1
00034 e58d3008 str r3, [sp, #8]
00038 |$L38076|
00038 e59d3008 ldr r3, [sp, #8]
0003c e3530006 cmp r3, #6
00040 2a000009 bcs |$L38078|
; 142 : {
; 143 : *pDestByte++ = BootHeader[i];
00044 e59f21c4 ldr r2, [pc, #0x1C4]
00048 e59d3008 ldr r3, [sp, #8]
0004c e0823003 add r3, r2, r3
00050 e5d32000 ldrb r2, [r3]
00054 e59d3004 ldr r3, [sp, #4]
00058 e5c32000 strb r2, [r3]
0005c e59d3004 ldr r3, [sp, #4]
00060 e2833001 add r3, r3, #1
00064 e58d3004 str r3, [sp, #4]
; 144 : }
00068 eaffffef b |$L38077|
0006c |$L38078|
; 145 :
; 146 : chksum = 0;
0006c e3a03000 mov r3, #0
00070 e58d300c str r3, [sp, #0xC]
; 147 : len = sizeof(unsigned int) + 5;
00074 e3a03009 mov r3, #9
00078 e58d3010 str r3, [sp, #0x10]
; 148 :
; 149 : bootType = BOOT_TYPE;
0007c e3e03000 mvn r3, #0
00080 e58d3028 str r3, [sp, #0x28]
; 150 :
; 151 : uiTemp = len;
00084 e59d3010 ldr r3, [sp, #0x10]
00088 e58d3000 str r3, [sp]
; 152 : for (i = 0; i < 2; i++)
0008c e3a03000 mov r3, #0
00090 e58d3008 str r3, [sp, #8]
00094 ea000002 b |$L38080|
00098 |$L38081|
00098 e59d3008 ldr r3, [sp, #8]
0009c e2833001 add r3, r3, #1
000a0 e58d3008 str r3, [sp, #8]
000a4 |$L38080|
000a4 e59d3008 ldr r3, [sp, #8]
000a8 e3530002 cmp r3, #2
000ac aa000010 bge |$L38082|
; 153 : {
; 154 : *pDestByte++ = (unsigned char)(uiTemp & 0xFF);
000b0 e59d3000 ldr r3, [sp]
000b4 e20330ff and r3, r3, #0xFF
000b8 e20320ff and r2, r3, #0xFF
000bc e59d3004 ldr r3, [sp, #4]
000c0 e5c32000 strb r2, [r3]
000c4 e59d3004 ldr r3, [sp, #4]
000c8 e2833001 add r3, r3, #1
000cc e58d3004 str r3, [sp, #4]
; 155 : chksum += (uiTemp & 0xFF);
000d0 e59d3000 ldr r3, [sp]
000d4 e20320ff and r2, r3, #0xFF
000d8 e59d300c ldr r3, [sp, #0xC]
000dc e0833002 add r3, r3, r2
000e0 e58d300c str r3, [sp, #0xC]
; 156 : uiTemp >>= 8;
000e4 e59d3000 ldr r3, [sp]
000e8 e1a03423 mov r3, r3, lsr #8
000ec e58d3000 str r3, [sp]
; 157 : }
000f0 eaffffe8 b |$L38081|
000f4 |$L38082|
; 158 :
; 159 : uiTemp = bootType;
000f4 e59d3028 ldr r3, [sp, #0x28]
000f8 e58d3000 str r3, [sp]
; 160 : for (i = 0; i < sizeof(int); i++)
000fc e3a03000 mov r3, #0
00100 e58d3008 str r3, [sp, #8]
00104 ea000002 b |$L38085|
00108 |$L38086|
00108 e59d3008 ldr r3, [sp, #8]
0010c e2833001 add r3, r3, #1
00110 e58d3008 str r3, [sp, #8]
00114 |$L38085|
00114 e59d3008 ldr r3, [sp, #8]
00118 e3530004 cmp r3, #4
0011c 2a000010 bcs |$L38087|
; 161 : {
; 162 : *pDestByte++ = (unsigned char)(uiTemp & 0xFF);
00120 e59d3000 ldr r3, [sp]
00124 e20330ff and r3, r3, #0xFF
00128 e20320ff and r2, r3, #0xFF
0012c e59d3004 ldr r3, [sp, #4]
00130 e5c32000 strb r2, [r3]
00134 e59d3004 ldr r3, [sp, #4]
00138 e2833001 add r3, r3, #1
0013c e58d3004 str r3, [sp, #4]
; 163 : chksum += (uiTemp & 0xFF);
00140 e59d3000 ldr r3, [sp]
00144 e20320ff and r2, r3, #0xFF
00148 e59d300c ldr r3, [sp, #0xC]
0014c e0833002 add r3, r3, r2
00150 e58d300c str r3, [sp, #0xC]
; 164 : uiTemp >>= 8;
00154 e59d3000 ldr r3, [sp]
00158 e1a03423 mov r3, r3, lsr #8
0015c e58d3000 str r3, [sp]
; 165 : }
00160 eaffffe8 b |$L38086|
00164 |$L38087|
; 166 :
; 167 : *pDestByte++ = (unsigned char)((~chksum) & 0xFF);
00164 e59d300c ldr r3, [sp, #0xC]
00168 e1e03003 mvn r3, r3
0016c e20330ff and r3, r3, #0xFF
00170 e20320ff and r2, r3, #0xFF
00174 e59d3004 ldr r3, [sp, #4]
00178 e5c32000 strb r2, [r3]
0017c e59d3004 ldr r3, [sp, #4]
00180 e2833001 add r3, r3, #1
00184 e58d3004 str r3, [sp, #4]
; 168 :
; 169 : for (i = 0; i < BOOT_TAIL_SIZE; i++)
00188 e3a03000 mov r3, #0
0018c e58d3008 str r3, [sp, #8]
00190 ea000002 b |$L38090|
00194 |$L38091|
00194 e59d3008 ldr r3, [sp, #8]
00198 e2833001 add r3, r3, #1
0019c e58d3008 str r3, [sp, #8]
001a0 |$L38090|
001a0 e59d3008 ldr r3, [sp, #8]
001a4 e3530004 cmp r3, #4
001a8 2a000009 bcs |$L38092|
; 170 : {
; 171 : *pDestByte++ = BootTail[i];
001ac e59f2058 ldr r2, [pc, #0x58]
001b0 e59d3008 ldr r3, [sp, #8]
001b4 e0823003 add r3, r2, r3
001b8 e5d32000 ldrb r2, [r3]
001bc e59d3004 ldr r3, [sp, #4]
001c0 e5c32000 strb r2, [r3]
001c4 e59d3004 ldr r3, [sp, #4]
001c8 e2833001 add r3, r3, #1
001cc e58d3004 str r3, [sp, #4]
; 172 : }
001d0 eaffffef b |$L38091|
001d4 |$L38092|
; 173 :
; 174 : nReturn=ParallelPortWrite
; 175 : (
; 176 : ParallelSendBuffer,
; 177 : (unsigned int)(pDestByte - ParallelSendBuffer)
; 178 : );
001d4 e59d2004 ldr r2, [sp, #4]
001d8 e28d3018 add r3, sp, #0x18
001dc e0421003 sub r1, r2, r3
001e0 e28d0018 add r0, sp, #0x18
001e4 eb000000 bl ParallelPortWrite
001e8 e58d0030 str r0, [sp, #0x30]
001ec e59d3030 ldr r3, [sp, #0x30]
001f0 e58d3024 str r3, [sp, #0x24]
; 179 :
; 180 : return nReturn;
001f4 e59d3024 ldr r3, [sp, #0x24]
001f8 e58d302c str r3, [sp, #0x2C]
001fc e59d002c ldr r0, [sp, #0x2C]
; 181 : }
00200 e28dd034 add sp, sp, #0x34
00204 e49de004 ldr lr, [sp], #4
00208 e12fff1e bx lr
0020c |$L38132|
0020c 00000000 DCD |BootTail|
00210 00000000 DCD |BootHeader|
00214 00000000 DCD |??_C@_01LFCBOECM@?4?$AA@|
00218 |$M38128|
ENDP ; |ParallelPreDownload|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -