📄 parallel.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615
TTL d:\wince420\platform\ep931x\eboot\.\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
|EdbgVendorIds| DCW 0x0
DCW 0x0
DCD 0x4033
DCB 0x1
DCB "AD", 0x0
DCW 0x1050
DCW 0x940
DCD 0x4005
DCB 0x1
DCB "LS", 0x0
DCW 0x1050
DCW 0x940
DCD 0x2078
DCB 0x1
DCB "LS", 0x0
DCW 0x10ec
DCW 0x8029
DCD 0xc0f0
DCB 0x1
DCB "KS", 0x0
DCW 0x10ec
DCW 0x8129
DCD 0x0
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0x900b
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0xd0c9
DCB 0x4
DCB "RT", 0x0
DCW 0x10ec
DCW 0x8139
DCD 0xe04c
DCB 0x4
DCB "RT", 0x0
DCW 0x1186
DCW 0x1300
DCD 0x50ba
DCB 0x4
DCB "DL", 0x0
DCW 0x100b
DCW 0x20
DCD 0xa0cc
DCB 0x5
DCB "NG", 0x0
DCW 0x10b7
DCW 0x9050
DCD 0x6008
DCB 0x6
DCB "3C", 0x0
DCW 0x10b7
DCW 0x9200
DCD 0x476
DCB 0x6
DCB "3C", 0x0
|BootHeader| DCB 0xaa
DCB 0x55
DCB 0x55
DCB 0xaa
DCB 0x0
DCB 0x0
% 2
|BootTail| DCB 0x5a
DCB 0xa5
DCB 0xa
DCB 0x1a
EXPORT |ParallelPortRead|
IMPORT |OEMParallelPortGetByte|
; File d:\wince420\platform\ep931x\eboot\parallel.c
00000 AREA |.text| { |ParallelPortRead| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ParallelPortRead|, PDATA, SELECTION=5, ASSOC=|.text| { |ParallelPortRead| } ; comdat associative
|$T36626| DCD |ParallelPortRead|
DCD 0x40000f01
; Function compile flags: /Ogsy
00000 AREA |.text| { |ParallelPortRead| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ParallelPortRead| PROC
; 65 : {
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M36624|
00004 e1a05000 mov r5, r0
00008 e1a04001 mov r4, r1
; 66 : //for(;;) { OEMParallelPortGetByte();}
; 67 :
; 68 : int result;
; 69 : while (cb && (result=OEMParallelPortGetByte()) != -1) {
0000c e3550000 cmp r5, #0
00010 0a000006 beq |$L36558|
00014 |$L36557|
00014 eb000000 bl OEMParallelPortGetByte
00018 e3700001 cmn r0, #1
0001c 0a000003 beq |$L36558|
; 70 : *pByteReceived++= (unsigned char)result;
00020 e20000ff and r0, r0, #0xFF
00024 e4c40001 strb r0, [r4], #1
; 71 : cb--;
00028 e2555001 subs r5, r5, #1
0002c 1afffff8 bne |$L36557|
00030 |$L36558|
; 72 : }
; 73 : return cb;
00030 e1a00005 mov r0, r5
; 74 : }
00034 e8bd4030 ldmia sp!, {r4, r5, lr}
00038 e12fff1e bx lr
0003c |$M36625|
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
|$T36638| DCD |ParallelPortWrite|
DCD 0x40000f01
; Function compile flags: /Ogsy
00000 AREA |.text| { |ParallelPortWrite| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ParallelPortWrite| PROC
; 104 : {
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 |$M36636|
00004 e1a05000 mov r5, r0
00008 e1a06001 mov r6, r1
; 105 : while (cb--)
0000c e3560000 cmp r6, #0
00010 0a000006 beq |$L36631|
00014 e1a04006 mov r4, r6
00018 |$L36567|
; 106 : OEMParallelPortSendByte(*pByteSend++);
00018 e4d50001 ldrb r0, [r5], #1
0001c e2466001 sub r6, r6, #1
00020 eb000000 bl OEMParallelPortSendByte
00024 e2444001 sub r4, r4, #1
00028 e3540000 cmp r4, #0
0002c 8afffff9 bhi |$L36567|
00030 |$L36631|
; 105 : while (cb--)
00030 e2460001 sub r0, r6, #1
; 107 : return cb;
; 108 : }
00034 e8bd4070 ldmia sp!, {r4 - r6, lr}
00038 e12fff1e bx lr
0003c |$M36637|
ENDP ; |ParallelPortWrite|
EXPORT |??_C@_01PJCK@?4?$AA@| [ DATA ] ; `string'
EXPORT |ParallelPreDownload|
IMPORT |EdbgOutputDebugString|
00000 AREA |.text| { |ParallelPreDownload| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$ParallelPreDownload|, PDATA, SELECTION=5, ASSOC=|.text| { |ParallelPreDownload| } ; comdat associative
|$T36662| DCD |ParallelPreDownload|
DCD 0x40003902
00000 AREA |.rdata| { |??_C@_01PJCK@?4?$AA@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_01PJCK@?4?$AA@| DCB ".", 0x0 ; `string'
; Function compile flags: /Ogsy
00000 AREA |.text| { |ParallelPreDownload| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |ParallelPreDownload| PROC
; 119 : {
00000 e92d4070 stmdb sp!, {r4 - r6, lr}
00004 e24dd00c sub sp, sp, #0xC
00008 |$M36660|
; 120 : unsigned char * pDestByte;
; 121 : unsigned int chksum;
; 122 : unsigned int uiTemp;
; 123 : int bootType;
; 124 : unsigned len;
; 125 : int i;
; 126 : int nReturn=0;
; 127 : unsigned char ParallelSendBuffer[2 + sizeof(int) + BOOT_TAIL_SIZE];
; 128 :
; 129 : EdbgOutputDebugString(".");
00008 e59f00d0 ldr r0, [pc, #0xD0]
0000c eb000000 bl EdbgOutputDebugString
00010 e59f30c4 ldr r3, [pc, #0xC4]
; 130 : //
; 131 : // Prepare boot packet
; 132 : //
; 133 : pDestByte = ParallelSendBuffer;
; 134 : for (i = 0; i < BOOT_HEADER_SIZE; i++)
; 135 : {
; 136 : *pDestByte++ = BootHeader[i];
00014 e3a06000 mov r6, #0
00018 e28d2000 add r2, sp, #0
0001c e1a00006 mov r0, r6
00020 |$L36650|
00020 e1a01000 mov r1, r0
00024 e7d30001 ldrb r0, [r3, +r1]
00028 e7c20001 strb r0, [r2, +r1]
0002c e2810001 add r0, r1, #1
00030 e3500006 cmp r0, #6
00034 1afffff9 bne |$L36650|
00038 e28d5006 add r5, sp, #6
; 137 : }
; 138 :
; 139 : chksum = 0;
0003c e1a04006 mov r4, r6
; 140 : len = sizeof(unsigned int) + 5;
; 141 :
; 142 : bootType = BOOT_TYPE;
; 143 :
; 144 : uiTemp = len;
00040 e3a02009 mov r2, #9
00044 e3a03002 mov r3, #2
00048 |$L36586|
; 145 : for (i = 0; i < 2; i++)
; 146 : {
; 147 : *pDestByte++ = (unsigned char)(uiTemp & 0xFF);
; 148 : chksum += (uiTemp & 0xFF);
00048 e20210ff and r1, r2, #0xFF
0004c e4c52001 strb r2, [r5], #1
00050 e2433001 sub r3, r3, #1
00054 e20200ff and r0, r2, #0xFF
00058 e0844001 add r4, r4, r1
; 149 : uiTemp >>= 8;
0005c e1a02422 mov r2, r2, lsr #8
00060 e3530000 cmp r3, #0
00064 8afffff7 bhi |$L36586|
; 150 : }
; 151 :
; 152 : uiTemp = bootType;
00068 e3e02000 mvn r2, #0
0006c e3a03004 mov r3, #4
00070 |$L36591|
; 153 : for (i = 0; i < sizeof(int); i++)
; 154 : {
; 155 : *pDestByte++ = (unsigned char)(uiTemp & 0xFF);
; 156 : chksum += (uiTemp & 0xFF);
00070 e20210ff and r1, r2, #0xFF
00074 e4c52001 strb r2, [r5], #1
00078 e2433001 sub r3, r3, #1
0007c e20200ff and r0, r2, #0xFF
00080 e0844001 add r4, r4, r1
; 157 : uiTemp >>= 8;
00084 e1a02422 mov r2, r2, lsr #8
00088 e3530000 cmp r3, #0
0008c 8afffff7 bhi |$L36591|
; 158 : }
; 159 :
; 160 : *pDestByte++ = (unsigned char)((~chksum) & 0xFF);
00090 e1e00004 mvn r0, r4
00094 e59f203c ldr r2, [pc, #0x3C]
00098 e20010ff and r1, r0, #0xFF
0009c e4c50001 strb r0, [r5], #1
000a0 |$L36652|
; 161 :
; 162 : for (i = 0; i < BOOT_TAIL_SIZE; i++)
; 163 : {
; 164 : *pDestByte++ = BootTail[i];
000a0 e1a01006 mov r1, r6
000a4 e7d20001 ldrb r0, [r2, +r1]
000a8 e2816001 add r6, r1, #1
000ac e3560004 cmp r6, #4
000b0 e7c50001 strb r0, [r5, +r1]
000b4 1afffff9 bne |$L36652|
000b8 e2850004 add r0, r5, #4
; 165 : }
; 166 :
; 167 : nReturn=ParallelPortWrite
; 168 : (
; 169 : ParallelSendBuffer,
; 170 : (unsigned int)(pDestByte - ParallelSendBuffer)
; 171 : );
000bc e28d1000 add r1, sp, #0
000c0 e0401001 sub r1, r0, r1
000c4 e28d0000 add r0, sp, #0
000c8 eb000000 bl ParallelPortWrite
; 172 :
; 173 : return nReturn;
; 174 : }
000cc e28dd00c add sp, sp, #0xC
000d0 e8bd4070 ldmia sp!, {r4 - r6, lr}
000d4 e12fff1e bx lr
000d8 |$L36664|
000d8 00000000 DCD |BootTail|
000dc 00000000 DCD |BootHeader|
000e0 00000000 DCD |??_C@_01PJCK@?4?$AA@|
000e4 |$M36661|
ENDP ; |ParallelPreDownload|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -