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

📄 main.cod

📁 一个berry eboot 源代码
💻 COD
📖 第 1 页 / 共 5 页
字号:
; 503  : 	sg_u8YYLEX[u32TokenLength++] = *sg_pu8LexPos;

  0004c	e5c41000	 strb        r1, [r4]

; 504  : 
; 505  : 	// Time to parse!
; 506  : 
; 507  : 	if (*sg_pu8LexPos >= '0' && *sg_pu8LexPos <= '9')

  00050	e5d23000	 ldrb        r3, [r2]
  00054	e3a07001	 mov         r7, #1
  00058	e3a08000	 mov         r8, #0
  0005c	e3530030	 cmp         r3, #0x30
  00060	3a00004f	 bcc         |$L42561|
  00064	e3530039	 cmp         r3, #0x39
  00068	8a00004d	 bhi         |$L42561|

; 508  : 	{
; 509  : 		BOOL bHexNotation = FALSE;

  0006c	e3a00000	 mov         r0, #0

; 510  : 
; 511  : 		// It's a number! Let's see if it's hex notation
; 512  : 
; 513  : 		if ('0' == *sg_pu8LexPos)

  00070	e3530030	 cmp         r3, #0x30
  00074	1a00000c	 bne         |$L42563|

; 514  : 		{
; 515  : 			++sg_pu8LexPos;
; 516  : 			sg_u8YYLEX[u32TokenLength++] = *sg_pu8LexPos;

  00078	e5f23001	 ldrb        r3, [r2, #1]!
  0007c	e3a07002	 mov         r7, #2
  00080	e5c43001	 strb        r3, [r4, #1]

; 517  : 
; 518  : 			if ('X' == ToUpper(*sg_pu8LexPos))

  00084	e5d23000	 ldrb        r3, [r2]
  00088	e3530061	 cmp         r3, #0x61
  0008c	3a000001	 bcc         |$L44152|
  00090	e353007a	 cmp         r3, #0x7A
  00094	92433020	 subls       r3, r3, #0x20
  00098		 |$L44152|

; 519  : 			{
; 520  : 				// Yup! It's 0x something. Just ignore the 0x and eat everything else
; 521  : 
; 522  : 				bHexNotation = TRUE;
; 523  : 
; 524  : 				// Back up over the 0x
; 525  : 
; 526  : 				u32TokenLength -= 2;
; 527  : 				sg_pu8LexPos++;

  00098	e2822001	 add         r2, r2, #1
  0009c	e5842ac8	 str         r2, [r4, #0xAC8]
  000a0	e3530058	 cmp         r3, #0x58
  000a4	1a000001	 bne         |$L42568|
  000a8	e3a00001	 mov         r0, #1
  000ac		 |$L42563|

; 528  : 			}
; 529  : 			else
; 530  : 			{
; 531  : 				sg_pu8LexPos++;
; 532  : 			}
; 533  : 
; 534  : 		}
; 535  : 		else
; 536  : 		{
; 537  : 			--u32TokenLength;

  000ac	e3a07000	 mov         r7, #0
  000b0		 |$L42568|

; 538  : 		}
; 539  : 
; 540  : 		while (1)
; 541  : 		{
; 542  : 			if ((IsDigit(*sg_pu8LexPos) ||
; 543  : 				(bHexNotation && (ToUpper(*sg_pu8LexPos) >= 'A' && ToUpper(*sg_pu8LexPos) <= 'F') ) ) )

  000b0	e5d23000	 ldrb        r3, [r2]
  000b4	e3530030	 cmp         r3, #0x30
  000b8	3a000001	 bcc         |$L44158|
  000bc	e3530039	 cmp         r3, #0x39
  000c0	9a000011	 bls         |$L42571|
  000c4		 |$L44158|
  000c4	e3500000	 cmp         r0, #0
  000c8	0a000014	 beq         |$L42570|
  000cc	e3530061	 cmp         r3, #0x61
  000d0	3a000002	 bcc         |$L44165|
  000d4	e353007a	 cmp         r3, #0x7A
  000d8	92431020	 subls       r1, r3, #0x20
  000dc	9a000000	 bls         |$L44164|
  000e0		 |$L44165|
  000e0	e1a01003	 mov         r1, r3
  000e4		 |$L44164|
  000e4	e3510041	 cmp         r1, #0x41
  000e8	ba00000c	 blt         |$L42570|
  000ec	e3530061	 cmp         r3, #0x61
  000f0	3a000002	 bcc         |$L44171|
  000f4	e353007a	 cmp         r3, #0x7A
  000f8	92431020	 subls       r1, r3, #0x20
  000fc	9a000000	 bls         |$L44170|
  00100		 |$L44171|
  00100	e1a01003	 mov         r1, r3
  00104		 |$L44170|
  00104	e3510046	 cmp         r1, #0x46
  00108	ca000004	 bgt         |$L42570|
  0010c		 |$L42571|

; 544  : 			{
; 545  : 				sg_u8YYLEX[u32TokenLength++] = *sg_pu8LexPos;
; 546  : 				++sg_pu8LexPos;

  0010c	e2822001	 add         r2, r2, #1
  00110	e7c73004	 strb        r3, [r7, +r4]
  00114	e5842ac8	 str         r2, [r4, #0xAC8]
  00118	e2877001	 add         r7, r7, #1

; 547  : 			}
; 548  : 			else
; 549  : 			{
; 550  : 				break;
; 551  : 			}
; 552  : 		}

  0011c	eaffffe3	 b           |$L42568|
  00120		 |$L42570|

; 553  : 
; 554  : 		sg_u8YYLEX[u32TokenLength] = '\0';
; 555  : 
; 556  : 		if (bHexNotation)

  00120	e3500000	 cmp         r0, #0

; 557  : 		{
; 558  : 			UINT8 *pu8Ptr;
; 559  : 
; 560  : 			pu8Ptr = sg_u8YYLEX;
; 561  : 			sg_u32Constant = 0;
; 562  : 
; 563  : 			while (*pu8Ptr != '\0')

  00124	e1a00004	 mov         r0, r4
  00128	e7c78004	 strb        r8, [r7, +r4]
  0012c	0a000017	 beq         |$L42573|
  00130	e5d43000	 ldrb        r3, [r4]
  00134	e3a02000	 mov         r2, #0
  00138	e5842ac4	 str         r2, [r4, #0xAC4]
  0013c	e1b01003	 movs        r1, r3
  00140	0a000014	 beq         |$L42580|
  00144		 |$L42576|

; 564  : 			{
; 565  : 				sg_u32Constant <<= 4;

  00144	e1a02202	 mov         r2, r2, lsl #4

; 566  : 
; 567  : 				if (IsDigit(*pu8Ptr))

  00148	e3530030	 cmp         r3, #0x30
  0014c	3a000003	 bcc         |$L42578|
  00150	e3530039	 cmp         r3, #0x39

; 568  : 				{
; 569  : 					sg_u32Constant |= (*pu8Ptr - '0');

  00154	92413030	 subls       r3, r1, #0x30
  00158	91832002	 orrls       r2, r3, r2
  0015c	9a000006	 bls         |$L42579|
  00160		 |$L42578|

; 570  : 				}
; 571  : 				else
; 572  : 				{
; 573  : 					sg_u32Constant |= ((ToUpper(*pu8Ptr) - 'A') + 10);

  00160	e3530061	 cmp         r3, #0x61
  00164	3a000001	 bcc         |$L44183|
  00168	e353007a	 cmp         r3, #0x7A
  0016c	92433020	 subls       r3, r3, #0x20
  00170		 |$L44183|
  00170	e2433037	 sub         r3, r3, #0x37
  00174	e1832002	 orr         r2, r3, r2
  00178	e5842ac4	 str         r2, [r4, #0xAC4]
  0017c		 |$L42579|
  0017c	e5f03001	 ldrb        r3, [r0, #1]!
  00180	e1b01003	 movs        r1, r3
  00184	1affffee	 bne         |$L42576|

; 568  : 				{
; 569  : 					sg_u32Constant |= (*pu8Ptr - '0');

  00188	e5842ac4	 str         r2, [r4, #0xAC4]

; 574  : 				}
; 575  : 				++pu8Ptr;
; 576  : 			}
; 577  : 		}
; 578  : 		else

  0018c	ea000001	 b           |$L42580|
  00190		 |$L42573|

; 579  : 		{
; 580  : 			sg_u32Constant = atol(sg_u8YYLEX);

  00190	eb000000	 bl          atol
  00194	e5840ac4	 str         r0, [r4, #0xAC4]
  00198		 |$L42580|

; 581  : 		}
; 582  : 
; 583  : 		eToken = LEX_CONSTANT;

  00198	e3a00c01	 mov         r0, #1, 24
  0019c	e3800001	 orr         r0, r0, #1

; 584  : 	}
; 585  : 	else

  001a0	ea000054	 b           |$L42592|
  001a4		 |$L42561|

; 586  : 	if (ToUpper(*sg_pu8LexPos) >= 'A' && ToUpper(*sg_pu8LexPos) <= 'Z')

  001a4	e3530061	 cmp         r3, #0x61
  001a8	3a000002	 bcc         |$L44190|
  001ac	e353007a	 cmp         r3, #0x7A
  001b0	92430020	 subls       r0, r3, #0x20
  001b4	9a000000	 bls         |$L44189|
  001b8		 |$L44190|
  001b8	e1a00003	 mov         r0, r3
  001bc		 |$L44189|
  001bc	e3500041	 cmp         r0, #0x41
  001c0	ba00004b	 blt         |$L42582|
  001c4	e3530061	 cmp         r3, #0x61
  001c8	3a000001	 bcc         |$L44195|
  001cc	e353007a	 cmp         r3, #0x7A
  001d0	92433020	 subls       r3, r3, #0x20
  001d4		 |$L44195|
  001d4	e353005a	 cmp         r3, #0x5A
  001d8	ca000045	 bgt         |$L42582|

; 587  : 	{
; 588  : 		struct SIdentifierEntry *psIdent;
; 589  : 
; 590  : 		eToken = LEX_IDENTIFIER;
; 591  : 
; 592  : 		++sg_pu8LexPos;

  001dc	e2822001	 add         r2, r2, #1

; 597  : 		}

  001e0	e2843001	 add         r3, r4, #1
  001e4	e5842ac8	 str         r2, [r4, #0xAC8]
  001e8	e043e002	 sub         lr, r3, r2
  001ec	e3a00f42	 mov         r0, #0x42, 30
  001f0		 |$L42585|
  001f0	e5d23000	 ldrb        r3, [r2]
  001f4	e3530061	 cmp         r3, #0x61
  001f8	3a000002	 bcc         |$L44213|
  001fc	e353007a	 cmp         r3, #0x7A
  00200	92431020	 subls       r1, r3, #0x20
  00204	9a000000	 bls         |$L44212|

; 593  : 
; 594  : 		while ( (IsAlpha(*sg_pu8LexPos)) ||	('_' == *sg_pu8LexPos) )

  00208		 |$L44213|
  00208	e1a01003	 mov         r1, r3
  0020c		 |$L44212|
  0020c	e3510041	 cmp         r1, #0x41
  00210	ba000007	 blt         |$L44218|
  00214	e3530061	 cmp         r3, #0x61
  00218	3a000002	 bcc         |$L44216|
  0021c	e353007a	 cmp         r3, #0x7A
  00220	92431020	 subls       r1, r3, #0x20
  00224	9a000000	 bls         |$L44215|
  00228		 |$L44216|
  00228	e1a01003	 mov         r1, r3
  0022c		 |$L44215|
  0022c	e351005a	 cmp         r1, #0x5A
  00230	da000001	 ble         |$L42587|
  00234		 |$L44218|
  00234	e353005f	 cmp         r3, #0x5F
  00238	1a000003	 bne         |$L42586|
  0023c		 |$L42587|

; 595  : 		{
; 596  : 			sg_u8YYLEX[u32TokenLength++] = *sg_pu8LexPos++;

  0023c	e7ce3002	 strb        r3, [lr, +r2]
  00240	e2822001	 add         r2, r2, #1
  00244	e2877001	 add         r7, r7, #1

; 597  : 		}

  00248	eaffffe8	 b           |$L42585|
  0024c		 |$L42586|

; 598  : 
; 599  : 		psIdent = sg_sIdentifiers;

  0024c	e59f60b0	 ldr         r6, [pc, #0xB0]
  00250	e5842ac8	 str         r2, [r4, #0xAC8]

; 600  : 		sg_u8YYLEX[u32TokenLength] = '\0';

  00254	e7c78004	 strb        r8, [r7, +r4]

; 601  : 
; 602  : 		while (psIdent->pu8TextToMatch)

  00258	e596e000	 ldr         lr, [r6]
  0025c	e35e0000	 cmp         lr, #0
  00260	0a000024	 beq         |$L42592|
  00264		 |$L42589|

; 603  : 		{
; 604  : 			if (stricmp(psIdent->pu8TextToMatch, sg_u8YYLEX) == 0)

  00264	e5de3000	 ldrb        r3, [lr]
  00268	e1a05004	 mov         r5, r4
  0026c	ea000012	 b           |$L44324|
  00270		 |$L44243|
  00270	e5d52000	 ldrb        r2, [r5]
  00274	e3520000	 cmp         r2, #0
  00278	0a000011	 beq         |$L44244|
  0027c	e3530061	 cmp         r3, #0x61
  00280	3a000002	 bcc         |$L44238|
  00284	e353007a	 cmp         r3, #0x7A
  00288	92431020	 subls       r1, r3, #0x20
  0028c	9a000000	 bls         |$L44237|
  00290		 |$L44238|
  00290	e1a01003	 mov         r1, r3
  00294		 |$L44237|
  00294	e3520061	 cmp         r2, #0x61
  00298	3a000002	 bcc         |$L44241|
  0029c	e352007a	 cmp         r2, #0x7A
  002a0	92423020	 subls       r3, r2, #0x20
  002a4	9a000000	 bls         |$L44240|
  002a8		 |$L44241|
  002a8	e1a03002	 mov         r3, r2
  002ac		 |$L44240|
  002ac	e1510003	 cmp         r1, r3
  002b0	1a000009	 bne         |$L44247|
  002b4	e5fe3001	 ldrb        r3, [lr, #1]!
  002b8	e2855001	 add         r5, r5, #1
  002bc		 |$L44324|
  002bc	e3530000	 cmp         r3, #0
  002c0	1affffea	 bne         |$L44243|
  002c4		 |$L44244|
  002c4	e5de3000	 ldrb        r3, [lr]
  002c8	e3530000	 cmp         r3, #0
  002cc	1a000002	 bne         |$L44247|
  002d0	e5d53000	 ldrb        r3, [r5]
  002d4	e3530000	 cmp         r3, #0
  002d8	0a000003	 beq         |$L44258|
  002dc		 |$L44247|
  002dc	e5b63008	 ldr         r3, [r6, #8]!
  002e0	e1b0e003	 movs        lr, r3
  002e4	1affffde	 bne         |$L42589|

; 601  : 
; 602  : 		while (psIdent->pu8TextToMatch)

  002e8	ea000002	 b           |$L42592|
  002ec		 |$L44258|

; 605  : 			{
; 606  : 				eToken = psIdent->eToken;

  002ec	e5960004	 ldr         r0, [r6, #4]

; 607  : 				break;
; 608  : 			}
; 609  : 			psIdent++;
; 610  : 		}
; 611  : 	}
; 612  : 	else

  002f0	ea000000	 b           |$L42592|
  002f4		 |$L42582|

; 613  : 	{
; 614  : 		eToken = sg_u8YYLEX[u32TokenLength - 1];

  002f4	e1a00001	 mov         r0, r1
  002f8		 |$L42592|

; 615  : 	}
; 616  : 
; 617  : 	sg_u8YYLEX[u32TokenLength] = '\0';

  002f8	e7c78004	 strb        r8, [r7, +r4]

; 618  : 
; 619  : 	return(eToken);

⌨️ 快捷键说明

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