📄 lcd_plat.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 14.01.60511.01
TTL D:\WINCE600\PLATFORM\M-stone\SRC\DRIVERS\Display\panels\lcd_plat.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:LIBCMT "
DCB "-defaultlib:OLDNAMES "
00000 AREA |.data|, DATA
COMMON |XllpLCD|, 0x90
|?s_szGPERegKey@?1??get_screen_size@@9@9| DCB "D", 0x0, "r", 0x0, "i", 0x0
DCB "v", 0x0, "e", 0x0, "r", 0x0, "s", 0x0, "\\", 0x0, "D", 0x0
DCB "i", 0x0, "s", 0x0, "p", 0x0, "l", 0x0, "a", 0x0, "y", 0x0
DCB "\\", 0x0, "G", 0x0, "P", 0x0, "E", 0x0, 0x0, 0x0 ; `get_screen_size'::`2'::s_szGPERegKey
EXPORT |__$ArrayPad$| [ DATA ]
EXPORT |get_blit_option|
IMPORT |KernelIoControl|
IMPORT |__GSHandlerCheck|
IMPORT |__security_cookie|
IMPORT |__security_check_cookie|
; File d:\wince600\platform\m-stone\src\drivers\display\panels\lcd_plat.c
00000 AREA |.pdata|, PDATA
|$T42634| DCD |$LN5@get_blit_o|
DCD 0xc0001602
00000 AREA |.xdata|, DATA
|$T42630| DCD 0xfffffff4
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 00000000 DCD |__GSHandlerCheck|
00004 00000000 DCD |$T42630|
00008 |get_blit_option| PROC
; 42 : {
00008 |$LN5@get_blit_o|
00008 e92d4010 stmdb sp!, {r4, lr}
0000c e24dd0d0 sub sp, sp, #0xD0
00010 |$M42631|
00010 e59f3044 ldr r3, [pc, #0x44]
00014 e5933000 ldr r3, [r3]
00018 e58d30cc str r3, [sp, #0xCC]
; 43 : DWORD out_size;
; 44 : BSP_ARGS args;
; 45 :
; 46 : KernelIoControl(IOCTL_GET_BSP_ARGS, NULL, 0,
; 47 : &args, sizeof(BSP_ARGS), &out_size);
0001c e59f0034 ldr r0, [pc, #0x34]
00020 e28de008 add lr, sp, #8
00024 e3a040c0 mov r4, #0xC0
00028 e28d300c add r3, sp, #0xC
0002c e3a02000 mov r2, #0
00030 e3a01000 mov r1, #0
00034 e58de004 str lr, [sp, #4]
00038 e58d4000 str r4, [sp]
0003c eb000000 bl KernelIoControl
; 48 :
; 49 : return args.DefaultBlit;
00040 e59d00cc ldr r0, [sp, #0xCC]
00044 eb000000 bl __security_check_cookie
00048 e59d00c0 ldr r0, [sp, #0xC0]
; 50 : }
0004c e28dd0d0 add sp, sp, #0xD0
00050 e8bd4010 ldmia sp!, {r4, lr}
00054 e12fff1e bx lr
00058 |$LN6@get_blit_o|
00058 |$LN7@get_blit_o|
00058 01013e80 DCD 0x1013e80
0005c |$LN8@get_blit_o|
0005c 00000000 DCD |__security_cookie|
00060 |$M42632|
ENDP ; |get_blit_option|
EXPORT |__$ArrayPad$| [ DATA ]
00000 AREA |.pdata|, PDATA
|$T42649| DCD |$LN5@get_panel_|
DCD 0xc0001602
00000 AREA |.xdata|, DATA
|$T42645| DCD 0xfffffff4
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 00000000 DCD |__GSHandlerCheck|
00004 00000000 DCD |$T42645|
00008 |get_panel_type| PROC
; 53 : {
00008 |$LN5@get_panel_|
00008 e92d4010 stmdb sp!, {r4, lr}
0000c e24dd0d0 sub sp, sp, #0xD0
00010 |$M42646|
00010 e59f3044 ldr r3, [pc, #0x44]
00014 e5933000 ldr r3, [r3]
00018 e58d30cc str r3, [sp, #0xCC]
; 54 : DWORD out_size;
; 55 : BSP_ARGS args;
; 56 :
; 57 : KernelIoControl(IOCTL_GET_BSP_ARGS, NULL, 0,
; 58 : &args, sizeof(BSP_ARGS), &out_size);
0001c e59f0034 ldr r0, [pc, #0x34]
00020 e28de008 add lr, sp, #8
00024 e3a040c0 mov r4, #0xC0
00028 e28d300c add r3, sp, #0xC
0002c e3a02000 mov r2, #0
00030 e3a01000 mov r1, #0
00034 e58de004 str lr, [sp, #4]
00038 e58d4000 str r4, [sp]
0003c eb000000 bl KernelIoControl
; 59 :
; 60 : return args.DefaultLCDPanel;
00040 e59d00cc ldr r0, [sp, #0xCC]
00044 eb000000 bl __security_check_cookie
00048 e59d00c4 ldr r0, [sp, #0xC4]
; 61 : }
0004c e28dd0d0 add sp, sp, #0xD0
00050 e8bd4010 ldmia sp!, {r4, lr}
00054 e12fff1e bx lr
00058 |$LN6@get_panel_|
00058 |$LN7@get_panel_|
00058 01013e80 DCD 0x1013e80
0005c |$LN8@get_panel_|
0005c 00000000 DCD |__security_cookie|
00060 |$M42647|
ENDP ; |get_panel_type|
EXPORT |__$ArrayPad$| [ DATA ]
EXPORT |is_dual_panel|
00000 AREA |.pdata|, PDATA
|$T42670| DCD |$LN11@is_dual_pa|
DCD 0xc0002102
00000 AREA |.xdata|, DATA
|$T42666| DCD 0xfffffff4
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 00000000 DCD |__GSHandlerCheck|
00004 00000000 DCD |$T42666|
00008 |is_dual_panel| PROC
; 64 : {
00008 |$LN11@is_dual_pa|
00008 e92d4010 stmdb sp!, {r4, lr}
0000c e24dd0d0 sub sp, sp, #0xD0
00010 |$M42667|
00010 e59f3070 ldr r3, [pc, #0x70]
00014 e5933000 ldr r3, [r3]
00018 e58d30cc str r3, [sp, #0xCC]
; 65 : DWORD cfg = get_panel_type();
0001c e59f0060 ldr r0, [pc, #0x60]
00020 e28de008 add lr, sp, #8
00024 e3a040c0 mov r4, #0xC0
00028 e28d300c add r3, sp, #0xC
0002c e3a02000 mov r2, #0
00030 e3a01000 mov r1, #0
00034 e58de004 str lr, [sp, #4]
00038 e58d4000 str r4, [sp]
0003c eb000000 bl KernelIoControl
; 66 : switch (cfg)
00040 e59d30c4 ldr r3, [sp, #0xC4]
00044 e3530020 cmp r3, #0x20
00048 3a000007 bcc |$LN1@is_dual_pa|
0004c e3530021 cmp r3, #0x21
00050 9a000001 bls |$LN2@is_dual_pa|
00054 e3530025 cmp r3, #0x25
00058 1a000003 bne |$LN1@is_dual_pa|
0005c |$LN2@is_dual_pa|
; 67 : {
; 68 : case LCD_PANEL_ID_VGA_QVGA_OLED_LEAD:
; 69 : case LCD_PANEL_ID_VGA_QVGA_OLED_LEAD_FREE:
; 70 : case LCD_PANEL_ID_VGA_QVGA_OLED_LEAD_FREE_LANDSCAPE:
; 71 : return TRUE;
0005c e59d00cc ldr r0, [sp, #0xCC]
00060 eb000000 bl __security_check_cookie
00064 e3a00001 mov r0, #1
00068 ea000002 b |$LN3@is_dual_pa|
0006c |$LN1@is_dual_pa|
; 72 : default:
; 73 : return FALSE;
0006c e59d00cc ldr r0, [sp, #0xCC]
00070 eb000000 bl __security_check_cookie
00074 e3a00000 mov r0, #0
00078 |$LN3@is_dual_pa|
; 74 : }
; 75 : }
00078 e28dd0d0 add sp, sp, #0xD0
0007c e8bd4010 ldmia sp!, {r4, lr}
00080 e12fff1e bx lr
00084 |$LN12@is_dual_pa|
00084 |$LN13@is_dual_pa|
00084 01013e80 DCD 0x1013e80
00088 |$LN14@is_dual_pa|
00088 00000000 DCD |__security_cookie|
0008c |$M42668|
ENDP ; |is_dual_panel|
EXPORT |get_screen_size|
EXPORT |??_C@_1BK@HNDINEGH@?$AAV?$AAe?$AAr?$AAt?$AAi?$AAc?$AAa?$AAl?$AAS?$AAi?$AAz?$AAe?$AA?$AA@| [ DATA ] ; `string'
EXPORT |??_C@_1BO@CPEMBNKP@?$AAH?$AAo?$AAr?$AAi?$AAz?$AAo?$AAn?$AAt?$AAa?$AAl?$AAS?$AAi?$AAz?$AAe?$AA?$AA@| [ DATA ] ; `string'
IMPORT |RegQueryValueExW|
IMPORT |RegOpenKeyExW|
00000 AREA |.pdata|, PDATA
|$T42683| DCD |$LN10@get_screen|
DCD 0x40003702
00000 AREA |.rdata|, DATA, READONLY
|??_C@_1BK@HNDINEGH@?$AAV?$AAe?$AAr?$AAt?$AAi?$AAc?$AAa?$AAl?$AAS?$AAi?$AAz?$AAe?$AA?$AA@| DCB "V"
DCB 0x0, "e", 0x0, "r", 0x0, "t", 0x0, "i", 0x0, "c", 0x0, "a"
DCB 0x0, "l", 0x0, "S", 0x0, "i", 0x0, "z", 0x0, "e", 0x0, 0x0
DCB 0x0 ; `string'
00000 AREA |.rdata|, DATA, READONLY
|??_C@_1BO@CPEMBNKP@?$AAH?$AAo?$AAr?$AAi?$AAz?$AAo?$AAn?$AAt?$AAa?$AAl?$AAS?$AAi?$AAz?$AAe?$AA?$AA@| DCB "H"
DCB 0x0, "o", 0x0, "r", 0x0, "i", 0x0, "z", 0x0, "o", 0x0, "n"
DCB 0x0, "t", 0x0, "a", 0x0, "l", 0x0, "S", 0x0, "i", 0x0, "z"
DCB 0x0, "e", 0x0, 0x0, 0x0 ; `string'
; Function compile flags: /Ogspy
00000 AREA |.text|, CODE, ARM
00000 |get_screen_size| PROC
; 78 : {
00000 |$LN10@get_screen|
00000 e92d40f0 stmdb sp!, {r4 - r7, lr}
00004 e24dd018 sub sp, sp, #0x18
00008 |$M42680|
00008 e1a06001 mov r6, r1
0000c e1a05000 mov r5, r0
; 79 : HKEY hKey;
; 80 :
; 81 : static WCHAR s_szGPERegKey[] = L"Drivers\\Display\\GPE";
; 82 : // default size
; 83 : *width = 240;
; 84 : *height = 320;
; 85 :
; 86 : // Open GPE's regkey and read the know values from it.
; 87 : if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,
; 88 : s_szGPERegKey,
; 89 : 0,
; 90 : 0,
; 91 : &hKey))
00010 e3a030f0 mov r3, #0xF0
00014 e5853000 str r3, [r5]
00018 e59f10b8 ldr r1, [pc, #0xB8]
0001c e3a03d05 mov r3, #5, 26
00020 e5863000 str r3, [r6]
00024 e28de014 add lr, sp, #0x14
00028 e3a03000 mov r3, #0
0002c e3a02000 mov r2, #0
00030 e3a0010a mov r0, #0xA, 2
00034 e58de000 str lr, [sp]
00038 eb000000 bl RegOpenKeyExW
0003c e3500000 cmp r0, #0
00040 1a00001f bne |$LN1@get_screen|
; 92 : {
; 93 : DWORD dwType;
; 94 : DWORD dwValue;
; 95 : DWORD dwSize;
; 96 :
; 97 : dwSize = sizeof (ULONG);
; 98 : if (ERROR_SUCCESS == RegQueryValueEx(hKey,
; 99 : L"HorizontalSize",
; 100 : NULL,
; 101 : &dwType,
; 102 : (BYTE*)&dwValue,
; 103 : &dwSize))
00044 e59f1088 ldr r1, [pc, #0x88]
00048 e59d0014 ldr r0, [sp, #0x14]
0004c e3a07004 mov r7, #4
00050 e28de008 add lr, sp, #8
00054 e28d4010 add r4, sp, #0x10
00058 e28d300c add r3, sp, #0xC
0005c e3a02000 mov r2, #0
00060 e58d7008 str r7, [sp, #8]
00064 e58de004 str lr, [sp, #4]
00068 e58d4000 str r4, [sp]
0006c eb000000 bl RegQueryValueExW
00070 e3500000 cmp r0, #0
; 104 : {
; 105 : if (REG_DWORD == dwType)
00074 059d300c ldreq r3, [sp, #0xC]
; 106 : {
; 107 : *width = dwValue;
; 108 : }
; 109 : }
; 110 :
; 111 : dwSize = sizeof (ULONG);
; 112 : if (ERROR_SUCCESS == RegQueryValueEx(hKey,
; 113 : L"VerticalSize",
; 114 : NULL,
; 115 : &dwType,
; 116 : (BYTE*)&dwValue,
; 117 : &dwSize))
00078 e59f1050 ldr r1, [pc, #0x50]
0007c e59d0014 ldr r0, [sp, #0x14]
00080 03530004 cmpeq r3, #4
00084 059d3010 ldreq r3, [sp, #0x10]
00088 e28de008 add lr, sp, #8
0008c e28d4010 add r4, sp, #0x10
00090 05853000 streq r3, [r5]
00094 e3a05004 mov r5, #4
00098 e28d300c add r3, sp, #0xC
0009c e3a02000 mov r2, #0
000a0 e58d5008 str r5, [sp, #8]
000a4 e58de004 str lr, [sp, #4]
000a8 e58d4000 str r4, [sp]
000ac eb000000 bl RegQueryValueExW
000b0 e3500000 cmp r0, #0
; 118 : {
; 119 : if (REG_DWORD == dwType)
000b4 059d300c ldreq r3, [sp, #0xC]
000b8 03530004 cmpeq r3, #4
; 120 : {
; 121 : *height = dwValue;
000bc 059d3010 ldreq r3, [sp, #0x10]
000c0 05863000 streq r3, [r6]
000c4 |$LN1@get_screen|
; 122 : }
; 123 : }
; 124 : }
; 125 : }
000c4 e28dd018 add sp, sp, #0x18
000c8 e8bd40f0 ldmia sp!, {r4 - r7, lr}
000cc e12fff1e bx lr
000d0 |$LN11@get_screen|
000d0 |$LN12@get_screen|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -