📄 atamain.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4091
TTL D:\WINCE500\PLATFORM\smdk2440\DRIVERS\atapi\.\atamain.cpp
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |?g_hInstance@@3PAUHINSTANCE__@@A| [ DATA ] ; g_hInstance
EXPORT |?g_pDiskRoot@@3PAVCDisk@@A| [ DATA ] ; g_pDiskRoot
EXPORT |?g_csMain@@3UCRITICAL_SECTION@@A| [ DATA ] ; g_csMain
00000 AREA |.bss|, NOINIT
|?g_hInstance@@3PAUHINSTANCE__@@A| % 0x4 ; g_hInstance
|?g_pDiskRoot@@3PAVCDisk@@A| % 0x4 ; g_pDiskRoot
|?g_csMain@@3UCRITICAL_SECTION@@A| % 0x14 ; g_csMain
EXPORT |??0CIDEBUS@@QAA@XZ| ; CIDEBUS::CIDEBUS
IMPORT |memset|
00000 AREA |.pdata|, PDATA
|$T33063| DCD |$L33062|
DCD 0x40003404
; Function compile flags: /Odt
; File d:\wince500\platform\smdk2440\drivers\atapi\atamain.cpp
00000 AREA |.text|, CODE, ARM
00000 |??0CIDEBUS@@QAA@XZ| PROC ; CIDEBUS::CIDEBUS
; 40 : {
00000 |$L33062|
00000 e1a0c00d mov r12, sp
00004 e92d0001 stmdb sp!, {r0}
00008 e92d5000 stmdb sp!, {r12, lr}
0000c e24dd008 sub sp, sp, #8
00010 |$M33060|
; 41 : // initialize device handle table and device registry key name table
; 42 : for (int i = 0; i < MAX_DEVICES_PER_CONTROLLER; i++) {
00010 e3a03000 mov r3, #0
00014 e58d3000 str r3, [sp]
00018 ea000002 b |$L32340|
0001c |$L32341|
0001c e59d3000 ldr r3, [sp]
00020 e2833001 add r3, r3, #1
00024 e58d3000 str r3, [sp]
00028 |$L32340|
00028 e59d3000 ldr r3, [sp]
0002c e3530004 cmp r3, #4
00030 aa00000f bge |$L32342|
; 43 : m_hDevice[i] = NULL;
00034 e59d1000 ldr r1, [sp]
00038 e3a03004 mov r3, #4
0003c e0020391 mul r2, r1, r3
00040 e59d3010 ldr r3, [sp, #0x10]
00044 e0832002 add r2, r3, r2
00048 e3a03000 mov r3, #0
0004c e5823000 str r3, [r2]
; 44 : m_szDevice[i] = NULL;
00050 e59d3010 ldr r3, [sp, #0x10]
00054 e2831010 add r1, r3, #0x10
00058 e59d2000 ldr r2, [sp]
0005c e3a03004 mov r3, #4
00060 e0030392 mul r3, r2, r3
00064 e0812003 add r2, r1, r3
00068 e3a03000 mov r3, #0
0006c e5823000 str r3, [r2]
; 45 : }
00070 eaffffe9 b |$L32341|
00074 |$L32342|
; 46 : // initialize DDKREGWINDOW structure
; 47 : memset(&m_dwi, 0, sizeof(m_dwi));
00074 e3a02074 mov r2, #0x74
00078 e3a01000 mov r1, #0
0007c e59d3010 ldr r3, [sp, #0x10]
00080 e2830020 add r0, r3, #0x20
00084 eb000000 bl memset
; 48 : // initialize port structures
; 49 : m_pIdeReg = NULL;
00088 e59d3010 ldr r3, [sp, #0x10]
0008c e2832094 add r2, r3, #0x94
00090 e3a03000 mov r3, #0
00094 e5823000 str r3, [r2]
; 50 : m_pPrimaryPort = NULL;
00098 e59d3010 ldr r3, [sp, #0x10]
0009c e2832098 add r2, r3, #0x98
000a0 e3a03000 mov r3, #0
000a4 e5823000 str r3, [r2]
; 51 : m_pSecondaryPort = NULL;
000a8 e59d3010 ldr r3, [sp, #0x10]
000ac e283209c add r2, r3, #0x9C
000b0 e3a03000 mov r3, #0
000b4 e5823000 str r3, [r2]
; 52 : }
000b8 e59d3010 ldr r3, [sp, #0x10]
000bc e58d3004 str r3, [sp, #4]
000c0 e59d0004 ldr r0, [sp, #4]
000c4 e28dd008 add sp, sp, #8
000c8 e89d6000 ldmia sp, {sp, lr}
000cc e12fff1e bx lr
000d0 |$M33061|
ENDP ; |??0CIDEBUS@@QAA@XZ|, CIDEBUS::CIDEBUS
EXPORT |??1CIDEBUS@@QAA@XZ| ; CIDEBUS::~CIDEBUS
EXPORT |??_GCPort@@QAAPAXI@Z| ; CPort::`scalar deleting destructor'
EXPORT |??_C@_1HA@HPHGJOKB@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@| [ DATA ] ; `string'
EXPORT |??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@| [ DATA ] ; `string'
IMPORT |??3@YAXPAX@Z| ; operator delete
IMPORT |LocalFree|
IMPORT |NKDbgPrintfW|
IMPORT |dpCurSettings|
IMPORT |DeactivateDevice|
00008 AREA |.pdata|, PDATA
|$T33081| DCD |$L33080|
DCD 0x4000b904
00000 AREA |.rdata| { |??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1FK@FNONLNGN@?$AA?$CF?$AAs?$AA?3?$AA?5?$AAD?$AAE?$AAB?$AAU?$AAG?$AAC?$AAH?$AAK?$AA?5?$AAf?$AAa?$AAi?$AAl?$AAe?$AAd?$AA?5@| DCB "%"
DCB 0x0, "s", 0x0, ":", 0x0, " ", 0x0, "D", 0x0, "E", 0x0, "B"
DCB 0x0, "U", 0x0, "G", 0x0, "C", 0x0, "H", 0x0, "K", 0x0, " "
DCB 0x0, "f", 0x0, "a", 0x0, "i", 0x0, "l", 0x0, "e", 0x0, "d"
DCB 0x0, " ", 0x0, "i", 0x0, "n", 0x0, " ", 0x0, "f", 0x0, "i"
DCB 0x0, "l", 0x0, "e", 0x0, " ", 0x0, "%", 0x0, "s", 0x0, " "
DCB 0x0, "a", 0x0, "t", 0x0, " ", 0x0, "l", 0x0, "i", 0x0, "n"
DCB 0x0, "e", 0x0, " ", 0x0, "%", 0x0, "d", 0x0, " ", 0x0, 0xd
DCB 0x0, 0xa, 0x0, 0x0, 0x0 ; `string'
00000 AREA |.rdata| { |??_C@_1HA@HPHGJOKB@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@| }, DATA, READONLY, SELECTION=2 ; comdat any
|??_C@_1HA@HPHGJOKB@?$AAd?$AA?3?$AA?2?$AAw?$AAi?$AAn?$AAc?$AAe?$AA5?$AA0?$AA0?$AA?2?$AAp?$AAl?$AAa?$AAt?$AAf?$AAo?$AAr?$AAm@| DCB "d"
DCB 0x0, ":", 0x0, "\\", 0x0, "w", 0x0, "i", 0x0, "n", 0x0, "c"
DCB 0x0, "e", 0x0, "5", 0x0, "0", 0x0, "0", 0x0, "\\", 0x0, "p"
DCB 0x0, "l", 0x0, "a", 0x0, "t", 0x0, "f", 0x0, "o", 0x0, "r"
DCB 0x0, "m", 0x0, "\\", 0x0, "s", 0x0, "m", 0x0, "d", 0x0, "k"
DCB 0x0, "2", 0x0, "4", 0x0, "4", 0x0, "0", 0x0, "\\", 0x0, "d"
DCB 0x0, "r", 0x0, "i", 0x0, "v", 0x0, "e", 0x0, "r", 0x0, "s"
DCB 0x0, "\\", 0x0, "a", 0x0, "t", 0x0, "a", 0x0, "p", 0x0, "i"
DCB 0x0, "\\", 0x0, "a", 0x0, "t", 0x0, "a", 0x0, "m", 0x0, "a"
DCB 0x0, "i", 0x0, "n", 0x0, ".", 0x0, "c", 0x0, "p", 0x0, "p"
DCB 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Odt
000d0 AREA |.text|, CODE, ARM
000d0 |??1CIDEBUS@@QAA@XZ| PROC ; CIDEBUS::~CIDEBUS
; 57 : {
000d0 |$L33080|
000d0 e1a0c00d mov r12, sp
000d4 e92d0001 stmdb sp!, {r0}
000d8 e92d5000 stmdb sp!, {r12, lr}
000dc e24dd038 sub sp, sp, #0x38
000e0 |$M33078|
; 58 : // deinitialize device handle table and device registry key name table
; 59 : for (int i = 0; i < MAX_DEVICES_PER_CONTROLLER; i++) {
000e0 e3a03000 mov r3, #0
000e4 e58d3000 str r3, [sp]
000e8 ea000002 b |$L32347|
000ec |$L32348|
000ec e59d3000 ldr r3, [sp]
000f0 e2833001 add r3, r3, #1
000f4 e58d3000 str r3, [sp]
000f8 |$L32347|
000f8 e59d3000 ldr r3, [sp]
000fc e3530004 cmp r3, #4
00100 aa000047 bge |$L32349|
; 60 : if (m_hDevice[i]) {
00104 e59d1000 ldr r1, [sp]
00108 e3a03004 mov r3, #4
0010c e0020391 mul r2, r1, r3
00110 e59d3040 ldr r3, [sp, #0x40]
00114 e0833002 add r3, r3, r2
00118 e5933000 ldr r3, [r3]
0011c e3530000 cmp r3, #0
00120 0a00002b beq |$L32350|
; 61 : BOOL fOk = DeactivateDevice(m_hDevice[i]);
00124 e59d1000 ldr r1, [sp]
00128 e3a03004 mov r3, #4
0012c e0020391 mul r2, r1, r3
00130 e59d3040 ldr r3, [sp, #0x40]
00134 e0833002 add r3, r3, r2
00138 e5930000 ldr r0, [r3]
0013c eb000000 bl DeactivateDevice
00140 e58d001c str r0, [sp, #0x1C]
00144 e59d301c ldr r3, [sp, #0x1C]
00148 e58d3004 str r3, [sp, #4]
; 62 : DEBUGCHK(fOk);
0014c e59d3004 ldr r3, [sp, #4]
00150 e3530000 cmp r3, #0
00154 0a000002 beq |$L33065|
00158 e3a03001 mov r3, #1
0015c e58d3020 str r3, [sp, #0x20]
00160 ea000007 b |$L33066|
00164 |$L33065|
00164 e3a0303e mov r3, #0x3E
00168 e59f2240 ldr r2, [pc, #0x240]
0016c e59f1238 ldr r1, [pc, #0x238]
00170 e59f0230 ldr r0, [pc, #0x230]
00174 eb000000 bl NKDbgPrintfW
00178 e6000010 DCD 0xe6000010
0017c e3a03000 mov r3, #0
00180 e58d3020 str r3, [sp, #0x20]
00184 |$L33066|
; 63 : DEBUGCHK(m_szDevice[i] != NULL);
00184 e59d3040 ldr r3, [sp, #0x40]
00188 e2831010 add r1, r3, #0x10
0018c e59d2000 ldr r2, [sp]
00190 e3a03004 mov r3, #4
00194 e0030392 mul r3, r2, r3
00198 e0813003 add r3, r1, r3
0019c e5933000 ldr r3, [r3]
001a0 e3530000 cmp r3, #0
001a4 0a000002 beq |$L33067|
001a8 e3a03001 mov r3, #1
001ac e58d3024 str r3, [sp, #0x24]
001b0 ea000007 b |$L33068|
001b4 |$L33067|
001b4 e3a0303f mov r3, #0x3F
001b8 e59f21f0 ldr r2, [pc, #0x1F0]
001bc e59f11e8 ldr r1, [pc, #0x1E8]
001c0 e59f01e0 ldr r0, [pc, #0x1E0]
001c4 eb000000 bl NKDbgPrintfW
001c8 e6000010 DCD 0xe6000010
001cc e3a03000 mov r3, #0
001d0 e58d3024 str r3, [sp, #0x24]
001d4 |$L33068|
001d4 |$L32350|
; 64 : }
; 65 : if (m_szDevice[i] != NULL) {
001d4 e59d3040 ldr r3, [sp, #0x40]
001d8 e2831010 add r1, r3, #0x10
001dc e59d2000 ldr r2, [sp]
001e0 e3a03004 mov r3, #4
001e4 e0030392 mul r3, r2, r3
001e8 e0813003 add r3, r1, r3
001ec e5933000 ldr r3, [r3]
001f0 e3530000 cmp r3, #0
001f4 0a000009 beq |$L32358|
; 66 : delete m_szDevice[i];
001f8 e59d3040 ldr r3, [sp, #0x40]
001fc e2831010 add r1, r3, #0x10
00200 e59d2000 ldr r2, [sp]
00204 e3a03004 mov r3, #4
00208 e0030392 mul r3, r2, r3
0020c e0813003 add r3, r1, r3
00210 e5933000 ldr r3, [r3]
00214 e58d3008 str r3, [sp, #8]
00218 e59d0008 ldr r0, [sp, #8]
0021c eb000000 bl |??3@YAXPAX@Z|
00220 |$L32358|
; 67 : }
; 68 : }
00220 eaffffb1 b |$L32348|
00224 |$L32349|
; 69 : // delete IDE_ registry value set
; 70 : if (m_pIdeReg) {
00224 e59d3040 ldr r3, [sp, #0x40]
00228 e2833094 add r3, r3, #0x94
0022c e5933000 ldr r3, [r3]
00230 e3530000 cmp r3, #0
00234 0a00002a beq |$L32360|
; 71 : if (m_pIdeReg->pszSpawnFunction) {
00238 e59d3040 ldr r3, [sp, #0x40]
0023c e2833094 add r3, r3, #0x94
00240 e5933000 ldr r3, [r3]
00244 e2833024 add r3, r3, #0x24
00248 e5933000 ldr r3, [r3]
0024c e3530000 cmp r3, #0
00250 0a000005 beq |$L32361|
; 72 : LocalFree(m_pIdeReg->pszSpawnFunction);
00254 e59d3040 ldr r3, [sp, #0x40]
00258 e2833094 add r3, r3, #0x94
0025c e5933000 ldr r3, [r3]
00260 e2833024 add r3, r3, #0x24
00264 e5930000 ldr r0, [r3]
00268 eb000000 bl LocalFree
0026c |$L32361|
; 73 : }
; 74 : if (m_pIdeReg->pszIsrDll) {
0026c e59d3040 ldr r3, [sp, #0x40]
00270 e2833094 add r3, r3, #0x94
00274 e5933000 ldr r3, [r3]
00278 e2833028 add r3, r3, #0x28
0027c e5933000 ldr r3, [r3]
00280 e3530000 cmp r3, #0
00284 0a000005 beq |$L32362|
; 75 : LocalFree(m_pIdeReg->pszIsrDll);
00288 e59d3040 ldr r3, [sp, #0x40]
0028c e2833094 add r3, r3, #0x94
00290 e5933000 ldr r3, [r3]
00294 e2833028 add r3, r3, #0x28
00298 e5930000 ldr r0, [r3]
0029c eb000000 bl LocalFree
002a0 |$L32362|
; 76 : }
; 77 : if (m_pIdeReg->pszIsrHandler) {
002a0 e59d3040 ldr r3, [sp, #0x40]
002a4 e2833094 add r3, r3, #0x94
002a8 e5933000 ldr r3, [r3]
002ac e283302c add r3, r3, #0x2C
002b0 e5933000 ldr r3, [r3]
002b4 e3530000 cmp r3, #0
002b8 0a000005 beq |$L32363|
; 78 : LocalFree(m_pIdeReg->pszIsrHandler);
002bc e59d3040 ldr r3, [sp, #0x40]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -