📄 debugtimer.cod
字号:
; Listing generated by Microsoft (R) Optimizing Compiler Version 12.20.9615
TTL d:\wince420\platform\ep931x\kernel\hal\.\debugtimer.c
CODE32
00000 AREA |.drectve|, DRECTVE
DCB "-defaultlib:coredll.lib "
DCB "-defaultlib:corelibc.lib "
EXPORT |OEMQueryPerformanceCounter|
EXPORT |OEMQueryPerformanceFrequency|
EXPORT |pQueryPerformanceCounter| [ DATA ]
EXPORT |pQueryPerformanceFrequency| [ DATA ]
00000 AREA |.data|, DATA
|pQueryPerformanceCounter| DCD |OEMQueryPerformanceCounter|
|pQueryPerformanceFrequency| DCD |OEMQueryPerformanceFrequency|
EXPORT |DebugTimerInit|
; File d:\wince420\platform\ep931x\kernel\hal\debugtimer.c
00000 AREA |.text| { |DebugTimerInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DebugTimerInit|, PDATA, SELECTION=5, ASSOC=|.text| { |DebugTimerInit| } ; comdat associative
|$T12938| DCD |DebugTimerInit|
DCD 0x40000700
; Function compile flags: /Ogsy
00000 AREA |.text| { |DebugTimerInit| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DebugTimerInit| PROC
; 37 : {
00000 |$M12936|
; 38 : *TIM_DEBUGVALUEHIGH = 0;
00000 e59f2010 ldr r2, [pc, #0x10]
00004 e3a00000 mov r0, #0
; 39 : *TIM_DEBUGVALUEHIGH = DEBUGVALUEHIGH_ENABLE;
00008 e3a01c01 mov r1, #1, 24
0000c e5820000 str r0, [r2]
00010 e5821000 str r1, [r2]
; 40 : }
00014 e12fff1e bx lr
00018 |$L12940|
00018 b0810064 DCD 0xb0810064
0001c |$M12937|
ENDP ; |DebugTimerInit|
EXPORT |GetSystemTimeInMsec|
00000 AREA |.text| { |GetSystemTimeInMsec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$GetSystemTimeInMsec|, PDATA, SELECTION=5, ASSOC=|.text| { |GetSystemTimeInMsec| } ; comdat associative
|$T12949| DCD |GetSystemTimeInMsec|
DCD 0x40000a00
; Function compile flags: /Ogsy
00000 AREA |.text| { |GetSystemTimeInMsec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetSystemTimeInMsec| PROC
; 47 : {
00000 |$M12947|
; 48 : DWORD dwValue;
; 49 :
; 50 : dwValue = *TIM_DEBUGVALUELOW;
00000 e59f001c ldr r0, [pc, #0x1C]
; 51 : dwValue >>= 10;
; 52 :
; 53 :
; 54 : // div by 1024 to get msec from usec (should really use
; 55 : // 1000 instead of 1024, but it is close enough
; 56 : dwValue|= (*TIM_DEBUGVALUEHIGH | DEBUGVALUEHIGH_MASK)<<22;
00004 e59f1014 ldr r1, [pc, #0x14]
00008 e5900000 ldr r0, [r0]
0000c e1a02520 mov r2, r0, lsr #10
00010 e5910000 ldr r0, [r1]
00014 e38010ff orr r1, r0, #0xFF
00018 e1820b01 orr r0, r2, r1, lsl #22
; 57 : return dwValue;
; 58 : }
0001c e12fff1e bx lr
00020 |$L12951|
00020 b0810064 DCD 0xb0810064
00024 b0810060 DCD 0xb0810060
00028 |$M12948|
ENDP ; |GetSystemTimeInMsec|
EXPORT |GetSystemTimeInUSec|
00000 AREA |.text| { |GetSystemTimeInUSec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$GetSystemTimeInUSec|, PDATA, SELECTION=5, ASSOC=|.text| { |GetSystemTimeInUSec| } ; comdat associative
|$T12957| DCD |GetSystemTimeInUSec|
DCD 0x40000e01
; Function compile flags: /Ogsy
00000 AREA |.text| { |GetSystemTimeInUSec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |GetSystemTimeInUSec| PROC
; 65 : {
00000 e24dd008 sub sp, sp, #8
00004 |$M12955|
; 66 : volatile LARGE_INTEGER liValue;
; 67 :
; 68 : //
; 69 : // Must read the low value first.
; 70 : //
; 71 : liValue.LowPart = (ULONG)*TIM_DEBUGVALUELOW;
00004 e59f0028 ldr r0, [pc, #0x28]
; 72 : liValue.HighPart = (ULONG)(*TIM_DEBUGVALUEHIGH | DEBUGVALUEHIGH_MASK);
00008 e59f1020 ldr r1, [pc, #0x20]
0000c e5900000 ldr r0, [r0]
00010 e58d0000 str r0, [sp]
00014 e5910000 ldr r0, [r1]
00018 e38010ff orr r1, r0, #0xFF
0001c e58d1004 str r1, [sp, #4]
; 73 :
; 74 : return liValue.QuadPart;
00020 e59d0000 ldr r0, [sp]
00024 e59d1004 ldr r1, [sp, #4]
; 75 : }
00028 e28dd008 add sp, sp, #8
0002c e12fff1e bx lr
00030 |$L12959|
00030 b0810064 DCD 0xb0810064
00034 b0810060 DCD 0xb0810060
00038 |$M12956|
ENDP ; |GetSystemTimeInUSec|
EXPORT |DelayInMsec|
00000 AREA |.text| { |DelayInMsec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DelayInMsec|, PDATA, SELECTION=5, ASSOC=|.text| { |DelayInMsec| } ; comdat associative
|$T12968| DCD |DelayInMsec|
DCD 0x40000c01
; Function compile flags: /Ogsy
00000 AREA |.text| { |DelayInMsec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DelayInMsec| PROC
; 87 : {
00000 e92d4030 stmdb sp!, {r4, r5, lr}
00004 |$M12966|
00004 e1a05000 mov r5, r0
; 88 : DWORD passed, startTime;
; 89 :
; 90 : startTime=GetSystemTimeInMsec();
00008 eb000000 bl GetSystemTimeInMsec
0000c e1a04000 mov r4, r0
; 91 : passed=0;
; 92 :
; 93 : //
; 94 : // Get stuck in this loop until
; 95 : //
; 96 : while ( passed < msec)
00010 e3550000 cmp r5, #0
00014 9a000003 bls |$L12884|
00018 |$L12883|
; 97 : {
; 98 : passed = GetSystemTimeInMsec()-startTime;
00018 eb000000 bl GetSystemTimeInMsec
0001c e0401004 sub r1, r0, r4
00020 e1510005 cmp r1, r5
00024 3afffffb bcc |$L12883|
00028 |$L12884|
; 99 : }
; 100 : }
00028 e8bd4030 ldmia sp!, {r4, r5, lr}
0002c e12fff1e bx lr
00030 |$M12967|
ENDP ; |DelayInMsec|
EXPORT |DelayInuSec|
00000 AREA |.text| { |DelayInuSec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$DelayInuSec|, PDATA, SELECTION=5, ASSOC=|.text| { |DelayInuSec| } ; comdat associative
|$T12979| DCD |DelayInuSec|
DCD 0x40000d01
; Function compile flags: /Ogsy
00000 AREA |.text| { |DelayInuSec| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |DelayInuSec| PROC
; 110 : {
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M12977|
00004 e1a03000 mov r3, r0
; 111 : DWORD passed, startTime;
; 112 :
; 113 : startTime= *TIM_DEBUGVALUELOW;
00008 e59f4020 ldr r4, [pc, #0x20]
; 114 : passed=0;
; 115 :
; 116 : //
; 117 : // Get stuck in this loop until
; 118 : //
; 119 : while ( passed < uS)
0000c e3530000 cmp r3, #0
00010 e5942000 ldr r2, [r4]
00014 9a000003 bls |$L12893|
00018 |$L12892|
; 120 : {
; 121 : passed = (*TIM_DEBUGVALUELOW - startTime);
00018 e5940000 ldr r0, [r4]
0001c e0401002 sub r1, r0, r2
00020 e1510003 cmp r1, r3
00024 3afffffb bcc |$L12892|
00028 |$L12893|
; 122 : }
; 123 : }
00028 e8bd4010 ldmia sp!, {r4, lr}
0002c e12fff1e bx lr
00030 |$L12981|
00030 b0810060 DCD 0xb0810060
00034 |$M12978|
ENDP ; |DelayInuSec|
00000 AREA |.text| { |OEMQueryPerformanceCounter| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMQueryPerformanceCounter|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMQueryPerformanceCounter| } ; comdat associative
|$T12988| DCD |OEMQueryPerformanceCounter|
DCD 0x40000701
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMQueryPerformanceCounter| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMQueryPerformanceCounter| PROC
; 163 : {
00000 e92d4010 stmdb sp!, {r4, lr}
00004 |$M12986|
00004 e1a04000 mov r4, r0
; 164 : lpliPerformanceCount->QuadPart = (LONGLONG)GetSystemTimeInUSec();
00008 eb000000 bl GetSystemTimeInUSec
0000c e8840003 stmia r4, {r0, r1}
; 165 : return TRUE;
00010 e3a00001 mov r0, #1
; 166 : }
00014 e8bd4010 ldmia sp!, {r4, lr}
00018 e12fff1e bx lr
0001c |$M12987|
ENDP ; |OEMQueryPerformanceCounter|
00000 AREA |.text| { |OEMQueryPerformanceFrequency| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 AREA |.pdata$$OEMQueryPerformanceFrequency|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMQueryPerformanceFrequency| } ; comdat associative
|$T12996| DCD |OEMQueryPerformanceFrequency|
DCD 0x40000600
; Function compile flags: /Ogsy
00000 AREA |.text| { |OEMQueryPerformanceFrequency| }, CODE, ARM, SELECTION=1 ; comdat noduplicate
00000 |OEMQueryPerformanceFrequency| PROC
; 208 : {
00000 |$M12994|
; 209 : lpliPerformanceFreq->HighPart = 0;
00000 e3a02000 mov r2, #0
; 210 : lpliPerformanceFreq->LowPart = TIMER_DEBUG_FREQ;
00004 e3a0180f mov r1, #0xF, 16
00008 e5802004 str r2, [r0, #4]
0000c e5801000 str r1, [r0]
; 211 : return TRUE;
00010 e3a00001 mov r0, #1
; 212 : }
00014 e12fff1e bx lr
00018 |$M12995|
ENDP ; |OEMQueryPerformanceFrequency|
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -