⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 utils.cod

📁 一个berry eboot 源代码
💻 COD
📖 第 1 页 / 共 2 页
字号:

; 102  : {

  00000		 |$L39855|
  00000	e92d4ff0	 stmdb       sp!, {r4 - r11, lr}
  00004	e24dd00c	 sub         sp, sp, #0xC
  00008		 |$M39853|
  00008	e58d1004	 str         r1, [sp, #4]
  0000c	e1a01000	 mov         r1, r0
  00010	e58d1008	 str         r1, [sp, #8]

; 103  :     UINT32 ms, sec, min, hour, day, month, year, leap;
; 104  :     UINT32 *mtbl;
; 105  : 
; 106  :     ms   = 0;
; 107  :     sec  = CurrTime % 60;
; 108  :     min  = (CurrTime / 60);

  00014	e59f2160	 ldr         r2, [pc, #0x160]

; 109  :     hour = (min / 60);
; 110  :     day  = (hour / 24);

  00018	e59fe158	 ldr         lr, [pc, #0x158]
  0001c	e083b291	 umull       r11, r3, r1, r2
  00020	e1a0a2a3	 mov         r10, r3, lsr #5
  00024	e083929a	 umull       r9, r3, r10, r2

; 111  : 
; 112  :     pSysTime->wMilliseconds = ms;
; 113  :     pSysTime->wSecond       = sec;
; 114  :     pSysTime->wMinute       = (min % 60);
; 115  :     pSysTime->wHour         = (hour % 24);
; 116  :     pSysTime->wDayOfWeek    = (day + JAN1WEEK) % 7;

  00028	e59f2144	 ldr         r2, [pc, #0x144]

; 117  : 
; 118  :     year = ORIGINYEAR;

  0002c	e06a420a	 rsb         r4, r10, r10, lsl #4
  00030	e1a072a3	 mov         r7, r3, lsr #5
  00034	e0835e97	 umull       r5, r3, r7, lr
  00038	e0411104	 sub         r1, r1, r4, lsl #2
  0003c	e1a00223	 mov         r0, r3, lsr #4
  00040	e2808002	 add         r8, r0, #2
  00044	e0826298	 umull       r6, r2, r8, r2
  00048	e59d4004	 ldr         r4, [sp, #4]
  0004c	e067e207	 rsb         lr, r7, r7, lsl #4
  00050	e0483002	 sub         r3, r8, r2
  00054	e08230a3	 add         r3, r2, r3, lsr #1
  00058	e1a03123	 mov         r3, r3, lsr #2
  0005c	e58d0000	 str         r0, [sp]
  00060	e0802080	 add         r2, r0, r0, lsl #1
  00064	e0633183	 rsb         r3, r3, r3, lsl #3
  00068	e04a010e	 sub         r0, r10, lr, lsl #2
  0006c	e0483003	 sub         r3, r8, r3
  00070	e0472182	 sub         r2, r7, r2, lsl #3
  00074	e3a0e000	 mov         lr, #0
  00078	e1c400ba	 strh        r0, [r4, #0xA]
  0007c	e3a00e7b	 mov         r0, #0x7B, 28
  00080	e3a06f5b	 mov         r6, #0x5B, 30

; 119  :     while (TRUE)
; 120  :     {
; 121  :         leap = IsLeapYear(year);

  00084	e59f50e4	 ldr         r5, [pc, #0xE4]
  00088	e1c430b4	 strh        r3, [r4, #4]
  0008c	e59d3008	 ldr         r3, [sp, #8]
  00090	e1c420b8	 strh        r2, [r4, #8]
  00094	e59d2000	 ldr         r2, [sp]
  00098	e1c4e0be	 strh        lr, [r4, #0xE]
  0009c	e1c410bc	 strh        r1, [r4, #0xC]
  000a0	e380000c	 orr         r0, r0, #0xC
  000a4	e3a08064	 mov         r8, #0x64
  000a8	e3a07e19	 mov         r7, #0x19, 28
  000ac	e3866001	 orr         r6, r6, #1
  000b0		 |$L39717|
  000b0	e3a0e000	 mov         lr, #0
  000b4	e3100003	 tst         r0, #3
  000b8	1a00000f	 bne         |$L39836|
  000bc	e0831590	 umull       r1, r3, r0, r5
  000c0	e3a0e001	 mov         lr, #1
  000c4	e1a032a3	 mov         r3, r3, lsr #5
  000c8	e0020893	 mul         r2, r3, r8
  000cc	e0503002	 subs        r3, r0, r2
  000d0	1a000008	 bne         |$L39852|
  000d4	e0831590	 umull       r1, r3, r0, r5
  000d8	e1a033a3	 mov         r3, r3, lsr #7
  000dc	e0020793	 mul         r2, r3, r7
  000e0	e0503002	 subs        r3, r0, r2
  000e4	e59d2000	 ldr         r2, [sp]
  000e8	13a0e000	 movne       lr, #0
  000ec	1a000002	 bne         |$L39836|
  000f0	e3a0e001	 mov         lr, #1

; 123  :             break;
; 124  :         day -= 365+leap;

  000f4	ea000000	 b           |$L39836|
  000f8		 |$L39852|
  000f8	e59d2000	 ldr         r2, [sp]

; 119  :     while (TRUE)
; 120  :     {
; 121  :         leap = IsLeapYear(year);

  000fc		 |$L39836|

; 122  :         if (day < 365+leap)

  000fc	e28e3c01	 add         r3, lr, #1, 24
  00100	e283306d	 add         r3, r3, #0x6D
  00104	e1520003	 cmp         r2, r3

; 123  :             break;
; 124  :         day -= 365+leap;

  00108	2042300e	 subcs       r3, r2, lr
  0010c	20432006	 subcs       r2, r3, r6
  00110	258d2000	 strcs       r2, [sp]

; 125  :         year++;

  00114	22800001	 addcs       r0, r0, #1
  00118	2affffe4	 bcs         |$L39717|

; 126  :     }
; 127  :     pSysTime->wYear = year;
; 128  : 
; 129  :     mtbl = leap ? monthtable_leap : monthtable;

  0011c	e59f3048	 ldr         r3, [pc, #0x48]
  00120	e35e0000	 cmp         lr, #0
  00124	e1c400b0	 strh        r0, [r4]
  00128	02833030	 addeq       r3, r3, #0x30

; 130  :     for (month=0; month<12; month++) {

  0012c	e3a01000	 mov         r1, #0
  00130		 |$L39720|

; 131  :         if (day < mtbl[month])

  00130	e5930000	 ldr         r0, [r3]
  00134	e1520000	 cmp         r2, r0
  00138	3a000004	 bcc         |$L39841|
  0013c	e2811001	 add         r1, r1, #1
  00140	e351000c	 cmp         r1, #0xC

; 132  :             break;
; 133  :         day -= mtbl[month];

  00144	e0422000	 sub         r2, r2, r0
  00148	e2833004	 add         r3, r3, #4
  0014c	3afffff7	 bcc         |$L39720|
  00150		 |$L39841|

; 134  :     }
; 135  : 
; 136  :     pSysTime->wDay = day+1;

  00150	e2823001	 add         r3, r2, #1

; 137  :     pSysTime->wMonth = month+1;

  00154	e2812001	 add         r2, r1, #1
  00158	e1c420b2	 strh        r2, [r4, #2]
  0015c	e1c430b6	 strh        r3, [r4, #6]

; 138  : 
; 139  :     return;
; 140  : 
; 141  : }

  00160	e28dd00c	 add         sp, sp, #0xC
  00164	e8bd4ff0	 ldmia       sp!, {r4 - r11, lr}
  00168	e12fff1e	 bx          lr
  0016c		 |$L39858|
  0016c	00000000	 DCD         |monthtable_leap|
  00170	51eb851f	 DCD         0x51eb851f
  00174	24924925	 DCD         0x24924925
  00178	aaaaaaab	 DCD         0xaaaaaaab
  0017c	88888889	 DCD         0x88888889
  00180		 |$M39854|

			 ENDP  ; |FormatSystemTime|

	EXPORT	|OEMGetRealTime|
	IMPORT	|OALPAtoVA|

  00000			 AREA	 |.text| { |OEMGetRealTime| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$OEMGetRealTime|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMGetRealTime| } ; comdat associative
|$T39869| DCD	|$L39868|
	DCD	0x40000c01
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |OEMGetRealTime| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |OEMGetRealTime| PROC

; 145  : {

  00000		 |$L39868|
  00000	e92d4010	 stmdb       sp!, {r4, lr}
  00004		 |$M39866|
  00004	e1a04000	 mov         r4, r0

; 146  :     volatile BULVERDE_RTC_REG *pRTCRegs = NULL;
; 147  :     UINT32 CurrTime = 0;
; 148  : 
; 149  :     // Get the RTC value.
; 150  :     //
; 151  :     pRTCRegs = (volatile XLLP_RTC_T *)OALPAtoVA(BULVERDE_BASE_REG_PA_RTC, FALSE);

  00008	e3a00101	 mov         r0, #1, 2
  0000c	e3800609	 orr         r0, r0, #9, 12
  00010	e3a01000	 mov         r1, #0
  00014	eb000000	 bl          OALPAtoVA

; 152  :     CurrTime  = pRTCRegs->rcnr;

  00018	e5900000	 ldr         r0, [r0]

; 153  : 
; 154  :     FormatSystemTime(CurrTime, pSysTime);

  0001c	e1a01004	 mov         r1, r4
  00020	eb000000	 bl          FormatSystemTime

; 155  : 
; 156  :     return(TRUE);

  00024	e3a00001	 mov         r0, #1

; 157  : 
; 158  : }

  00028	e8bd4010	 ldmia       sp!, {r4, lr}
  0002c	e12fff1e	 bx          lr
  00030		 |$M39867|

			 ENDP  ; |OEMGetRealTime|

	EXPORT	|OEMEthGetSecs|

  00000			 AREA	 |.text| { |OEMEthGetSecs| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$OEMEthGetSecs|, PDATA, SELECTION=5, ASSOC=|.text| { |OEMEthGetSecs| } ; comdat associative
|$T39878| DCD	|$L39877|
	DCD	0x40001402
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |OEMEthGetSecs| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |OEMEthGetSecs| PROC

; 162  : {

  00000		 |$L39877|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004	e24dd010	 sub         sp, sp, #0x10
  00008		 |$M39875|

; 163  :     SYSTEMTIME st;
; 164  : 
; 165  :     OEMGetRealTime( &st );

  00008	e28d0000	 add         r0, sp, #0
  0000c	eb000000	 bl          OEMGetRealTime

; 166  : 
; 167  :     return((60UL * (60UL * (24UL * (31UL * st.wMonth + st.wDay) + st.wHour) + st.wMinute)) + st.wSecond);

  00010	e1dd30b2	 ldrh        r3, [sp, #2]
  00014	e1dd20b6	 ldrh        r2, [sp, #6]
  00018	e1dd10b8	 ldrh        r1, [sp, #8]
  0001c	e0633283	 rsb         r3, r3, r3, lsl #5
  00020	e0833002	 add         r3, r3, r2
  00024	e0833083	 add         r3, r3, r3, lsl #1
  00028	e1dd20ba	 ldrh        r2, [sp, #0xA]
  0002c	e0813183	 add         r3, r1, r3, lsl #3
  00030	e0633203	 rsb         r3, r3, r3, lsl #4
  00034	e1dd10bc	 ldrh        r1, [sp, #0xC]
  00038	e0823103	 add         r3, r2, r3, lsl #2
  0003c	e0633203	 rsb         r3, r3, r3, lsl #4
  00040	e0810103	 add         r0, r1, r3, lsl #2

; 168  : }

  00044	e28dd010	 add         sp, sp, #0x10
  00048	e49de004	 ldr         lr, [sp], #4
  0004c	e12fff1e	 bx          lr
  00050		 |$M39876|

			 ENDP  ; |OEMEthGetSecs|

	EXPORT	|OALGetTickCount|

  00000			 AREA	 |.text| { |OALGetTickCount| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000			 AREA	 |.pdata$$OALGetTickCount|, PDATA, SELECTION=5, ASSOC=|.text| { |OALGetTickCount| } ; comdat associative
|$T39887| DCD	|$L39886|
	DCD	0x40000701
; Function compile flags: /Ogsy

  00000			 AREA	 |.text| { |OALGetTickCount| }, CODE, ARM, SELECTION=1 ; comdat noduplicate

  00000		 |OALGetTickCount| PROC

; 181  : {

  00000		 |$L39886|
  00000	e52de004	 str         lr, [sp, #-4]!
  00004		 |$M39884|

; 182  :     return OEMEthGetSecs () * 1000;

  00004	eb000000	 bl          OEMEthGetSecs
  00008	e1a03000	 mov         r3, r0
  0000c	e3a02ffa	 mov         r2, #0xFA, 30
  00010	e0000293	 mul         r0, r3, r2

; 183  : }

  00014	e49de004	 ldr         lr, [sp], #4
  00018	e12fff1e	 bx          lr
  0001c		 |$M39885|

			 ENDP  ; |OALGetTickCount|

	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -