📄 editdec.txt
字号:
|L2.234|
0000ea 1bc0 SUBS r0,r0,r7
0000ec 6c31 LDR r1,[r6,#0x40]
0000ee 1e40 SUBS r0,r0,#1
0000f0 4281 CMP r1,r0
0000f2 d105 BNE |L2.256|
0000f4 f85b0025 LDR r0,[r11,r5,LSL #2]
0000f8 1c6d ADDS r5,r5,#1
0000fa fb004408 MLA r4,r0,r8,r4
0000fe e00f B |L2.288|
|L2.256|
000100 f81a9000 LDRB r9,[r10,r0]
000104 4648 MOV r0,r9
000106 f7fffffe BL _DecChar2Int
00010a 2800 CMP r0,#0
00010c db04 BLT |L2.280|
00010e f85b1025 LDR r1,[r11,r5,LSL #2]
000112 1c6d ADDS r5,r5,#1
000114 fb014400 MLA r4,r1,r0,r4
|L2.280|
000118 f1b90f2d CMP r9,#0x2d
00011c d100 BNE |L2.288|
00011e 4264 RSBS r4,r4,#0
|L2.288|
000120 1c7f ADDS r7,r7,#1
|L2.290|
000122 f9b6002a LDRSH r0,[r6,#0x2a]
000126 42b8 CMP r0,r7
000128 dcdf BGT |L2.234|
00012a 4621 MOV r1,r4
00012c 9800 LDR r0,[sp,#0]
00012e f7fffffe BL EDIT_SetValue
;;;264 _EditDec(Digit, pObj, hObj);
;;;265 _IncrementCursor(pObj);
000132 e7a9 B |L2.136|
|L2.308|
;;;266 }
;;;267 }
;;;268 }
;;;269 break;
;;;270 }
;;;271 }
;;;272 _UpdateBuffer(hObj);
000134 9800 LDR r0,[sp,#0]
000136 e8bd5ffc POP {r2-r12,lr}
00013a f7ffbffe B.W _UpdateBuffer
;;;273 }
;;;274
ENDP
00013e 0000 DCW 0x0000
|L2.320|
DCD GUI_Pow10
AREA ||i._AddPosition||, CODE, READONLY, ALIGN=1
_AddPosition PROC
;;;160 #if !EDIT_DEC_DIGITONLY
;;;161 static void _AddPosition(EDIT_Obj* pObj, EDIT_Handle hObj, int Sign) {
000000 b430 PUSH {r4,r5}
000002 460b MOV r3,r1
;;;162 int Pos;
;;;163 I32 v;
;;;164 v = Sign;
;;;165 Pos = pObj->MaxLen - pObj->CursorPos-1;
000004 f9b0102a LDRSH r1,[r0,#0x2a]
000008 6c05 LDR r5,[r0,#0x40]
;;;166 if (pObj->NumDecs && (Pos > pObj->NumDecs)) {
00000a f8904038 LDRB r4,[r0,#0x38]
00000e 1b49 SUBS r1,r1,r5 ;165
000010 1e49 SUBS r1,r1,#1 ;165
000012 b134 CBZ r4,|L3.34|
000014 428c CMP r4,r1
000016 da04 BGE |L3.34|
;;;167 Pos--;
000018 1e49 SUBS r1,r1,#1
00001a e002 B |L3.34|
|L3.28|
;;;168 }
;;;169 while (Pos--) {
;;;170 v *= 10;
00001c eb020282 ADD r2,r2,r2,LSL #2
000020 0052 LSLS r2,r2,#1
|L3.34|
000022 1e49 SUBS r1,r1,#1 ;169
000024 d2fa BCS |L3.28|
;;;171 }
;;;172 EDIT_SetValue(hObj, (I32)pObj->CurrentValue + v);
000026 6bc0 LDR r0,[r0,#0x3c]
000028 bc30 POP {r4,r5}
00002a 1881 ADDS r1,r0,r2
00002c 4618 MOV r0,r3
00002e f7ffbffe B.W EDIT_SetValue
;;;173 }
;;;174 #endif
ENDP
AREA ||i._DecChar2Int||, CODE, READONLY, ALIGN=1
_DecChar2Int PROC
;;;50 */
;;;51 static int _DecChar2Int(int Char) {
000000 3830 SUBS r0,r0,#0x30
;;;52 if ((Char >= '0') && (Char <= '9'))
000002 2809 CMP r0,#9
000004 d901 BLS |L4.10|
;;;53 return Char - '0';
;;;54 return -1;
000006 f04f30ff MOV r0,#0xffffffff
|L4.10|
;;;55 }
00000a 4770 BX lr
;;;56
ENDP
AREA ||i._IncrementCursor||, CODE, READONLY, ALIGN=1
_IncrementCursor PROC
;;;144 */
;;;145 static void _IncrementCursor(EDIT_Obj* pObj) {
000000 b510 PUSH {r4,lr}
;;;146 EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
000002 6c01 LDR r1,[r0,#0x40]
000004 4604 MOV r4,r0 ;145
000006 1c49 ADDS r1,r1,#1
000008 f7fffffe BL EDIT__SetCursorPos
;;;147 if (EDIT__GetCurrentChar(pObj) == '.') {
00000c 4620 MOV r0,r4
00000e f7fffffe BL EDIT__GetCurrentChar
000012 282e CMP r0,#0x2e
000014 d10d BNE |L5.50|
;;;148 if (pObj->CursorPos < (pObj->MaxLen - 1)) {
000016 f9b4002a LDRSH r0,[r4,#0x2a]
00001a 6c21 LDR r1,[r4,#0x40]
00001c 1e40 SUBS r0,r0,#1
00001e 4281 CMP r1,r0
000020 da01 BGE |L5.38|
;;;149 EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
000022 1c49 ADDS r1,r1,#1
000024 e000 B |L5.40|
|L5.38|
;;;150 } else {
;;;151 EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
000026 1e49 SUBS r1,r1,#1
|L5.40|
000028 4620 MOV r0,r4
00002a e8bd4010 POP {r4,lr}
00002e f7ffbffe B.W EDIT__SetCursorPos
|L5.50|
;;;152 }
;;;153 }
;;;154 }
000032 bd10 POP {r4,pc}
;;;155
ENDP
AREA ||i._MakeNegative||, CODE, READONLY, ALIGN=1
_MakeNegative PROC
;;;123 */
;;;124 static void _MakeNegative(EDIT_Obj* pObj, EDIT_Handle hObj) {
000000 4602 MOV r2,r0
000002 4608 MOV r0,r1
;;;125 if ((I32)pObj->CurrentValue > 0) {
000004 6bd1 LDR r1,[r2,#0x3c]
000006 2900 CMP r1,#0
000008 dd02 BLE |L6.16|
;;;126 EDIT_SetValue(hObj, (I32)pObj->CurrentValue * -1);
00000a 4249 RSBS r1,r1,#0
00000c f7ffbffe B.W EDIT_SetValue
|L6.16|
;;;127 }
;;;128 }
000010 4770 BX lr
;;;129
ENDP
AREA ||i._MakePositive||, CODE, READONLY, ALIGN=1
_MakePositive PROC
;;;113 */
;;;114 static void _MakePositive(EDIT_Obj* pObj, EDIT_Handle hObj) {
000000 4602 MOV r2,r0
000002 4608 MOV r0,r1
;;;115 if ((I32)pObj->CurrentValue < 0) {
000004 6bd1 LDR r1,[r2,#0x3c]
000006 2900 CMP r1,#0
000008 da02 BGE |L7.16|
;;;116 EDIT_SetValue(hObj, (I32)pObj->CurrentValue * -1);
00000a 4249 RSBS r1,r1,#0
00000c f7ffbffe B.W EDIT_SetValue
|L7.16|
;;;117 }
;;;118 }
000010 4770 BX lr
;;;119
ENDP
AREA ||i._SwapSign||, CODE, READONLY, ALIGN=1
_SwapSign PROC
;;;133 */
;;;134 static void _SwapSign(EDIT_Obj* pObj, EDIT_Handle hObj) {
000000 6bc2 LDR r2,[r0,#0x3c]
;;;135 if ((I32)pObj->CurrentValue > 0)
000002 2a00 CMP r2,#0
000004 dd01 BLE |L8.10|
;;;136 _MakeNegative(pObj, hObj);
000006 f7ffbffe B.W _MakeNegative
|L8.10|
;;;137 else
;;;138 _MakePositive(pObj, hObj);
00000a f7ffbffe B.W _MakePositive
;;;139 }
;;;140
ENDP
AREA ||i._UpdateBuffer||, CODE, READONLY, ALIGN=1
_UpdateBuffer PROC
;;;60 */
;;;61 static void _UpdateBuffer(EDIT_Handle hObj) {
000000 b538 PUSH {r3-r5,lr}
;;;62 char * s;
;;;63 EDIT_Obj * pObj;
;;;64 pObj = EDIT_H2P(hObj); /* The GUI needs not to be locked here. This function is called only from EDIT_AddKey which has already locked the GUI */
000002 f7fffffe BL GUI_ALLOC_h2p
000006 4604 MOV r4,r0
;;;65 s = (char*) GUI_ALLOC_h2p(pObj->hpText);
000008 f9b00028 LDRSH r0,[r0,#0x28]
00000c f7fffffe BL GUI_ALLOC_h2p
;;;66 if (pObj->Flags == GUI_EDIT_SIGNED) {
000010 9000 STR r0,[sp,#0]
000012 f894004a LDRB r0,[r4,#0x4a]
000016 2801 CMP r0,#1
000018 d109 BNE |L9.46|
;;;67 I32 Result = GUI_AddSign(pObj->CurrentValue, &s);
00001a 4669 MOV r1,sp
00001c 6be0 LDR r0,[r4,#0x3c]
00001e f7fffffe BL GUI_AddSign
;;;68 GUI_AddDecShift(Result, pObj->MaxLen - 1, pObj->NumDecs, &s);
000022 8d61 LDRH r1,[r4,#0x2a]
000024 f8942038 LDRB r2,[r4,#0x38]
000028 1e49 SUBS r1,r1,#1
00002a b2c9 UXTB r1,r1
;;;69 } else {
00002c e004 B |L9.56|
|L9.46|
;;;70 GUI_AddDecShift(pObj->CurrentValue, pObj->MaxLen, pObj->NumDecs, &s);
00002e 8d60 LDRH r0,[r4,#0x2a]
000030 f8942038 LDRB r2,[r4,#0x38]
000034 b2c1 UXTB r1,r0
000036 6be0 LDR r0,[r4,#0x3c]
|L9.56|
000038 466b MOV r3,sp ;68
00003a f7fffffe BL GUI_AddDecShift
;;;71 }
;;;72 }
00003e bd38 POP {r3-r5,pc}
;;;73
ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -