Added glabels with upper/lower parts used <= 15 instructions apart.

This commit is contained in:
Antonio Castelli
2021-05-30 14:27:01 -07:00
parent a72a063b79
commit 22d8de46c8
14 changed files with 33 additions and 26 deletions
@@ -287,7 +287,7 @@ glabel func_800143A8
/* 0153D4 800147D4 8FAE0074 */ lw $t6, 0x74($sp)
.L800147D8:
/* 0153D8 800147D8 8FBF003C */ lw $ra, 0x3c($sp)
/* 0153DC 800147DC 3C018012 */ lui $at, 0x8012
/* 0153DC 800147DC 3C018012 */ lui $at, %hi(D_8011AE8C) # $at, 0x8012
/* 0153E0 800147E0 8FB00018 */ lw $s0, 0x18($sp)
/* 0153E4 800147E4 8FB1001C */ lw $s1, 0x1c($sp)
/* 0153E8 800147E8 8FB20020 */ lw $s2, 0x20($sp)
@@ -300,5 +300,5 @@ glabel func_800143A8
/* 015404 80014804 27BD00B0 */ addiu $sp, $sp, 0xb0
/* 015408 80014808 01401025 */ move $v0, $t2
/* 01540C 8001480C 03E00008 */ jr $ra
/* 015410 80014810 AC2EAE8C */ sw $t6, -0x5174($at)
/* 015410 80014810 AC2EAE8C */ sw $t6, %lo(D_8011AE8C)($at)
@@ -260,7 +260,7 @@ glabel func_8004447C
/* 045440 80044840 00002825 */ move $a1, $zero
.L80044844:
/* 045444 80044844 11400006 */ beqz $t2, .L80044860
/* 045448 80044848 3C0D8012 */ lui $t5, 0x8012
/* 045448 80044848 3C0D8012 */ lui $t5, %hi(D_8011D58C) # $t5, 0x8012
/* 04544C 8004484C 240F0003 */ li $t7, 3
/* 045450 80044850 01E53023 */ subu $a2, $t7, $a1
/* 045454 80044854 0006CC00 */ sll $t9, $a2, 0x10
@@ -272,7 +272,7 @@ glabel func_8004447C
/* 045468 80044868 01803025 */ move $a2, $t4
.L8004486C:
/* 04546C 8004486C 01A66821 */ addu $t5, $t5, $a2
/* 045470 80044870 81ADD58C */ lb $t5, -0x2a74($t5)
/* 045470 80044870 81ADD58C */ lb $t5, %lo(D_8011D58C)($t5)
/* 045474 80044874 00000000 */ nop
/* 045478 80044878 15A0002D */ bnez $t5, .L80044930
/* 04547C 8004487C 00000000 */ nop
@@ -402,7 +402,7 @@ glabel func_8004447C
/* 045658 80044A58 10000020 */ b .L80044ADC
/* 04565C 80044A5C A61801C6 */ sh $t8, 0x1c6($s0)
/* 045660 80044A60 820C0173 */ lb $t4, 0x173($s0)
/* 045664 80044A64 3C018012 */ lui $at, 0x8012
/* 045664 80044A64 3C018012 */ lui $at, %hi(D_8011D58C) # $at, 0x8012
/* 045668 80044A68 11800005 */ beqz $t4, .L80044A80
/* 04566C 80044A6C 00000000 */ nop
/* 045670 80044A70 860D01C6 */ lh $t5, 0x1c6($s0)
@@ -414,7 +414,7 @@ glabel func_8004447C
/* 045684 80044A84 A20501CD */ sb $a1, 0x1cd($s0)
/* 045688 80044A88 002E0821 */ addu $at, $at, $t6
/* 04568C 80044A8C 10000013 */ b .L80044ADC
/* 045690 80044A90 A020D58C */ sb $zero, -0x2a74($at)
/* 045690 80044A90 A020D58C */ sb $zero, %lo(D_8011D58C)($at)
/* 045694 80044A94 820F0002 */ lb $t7, 2($s0)
/* 045698 80044A98 3C198012 */ lui $t9, %hi(D_8011D58C) # $t9, 0x8012
/* 04569C 80044A9C 032FC821 */ addu $t9, $t9, $t7
@@ -72,7 +72,7 @@ glabel func_80068BF4
/* 06990C 80068D0C 25F80001 */ addiu $t8, $t7, 1
/* 069910 80068D10 AE980000 */ sw $t8, ($s4)
/* 069914 80068D14 84F90000 */ lh $t9, ($a3)
/* 069918 80068D18 3C0E8012 */ lui $t6, 0x8012
/* 069918 80068D18 3C0E8012 */ lui $t6, %hi(D_80120AC4) # $t6, 0x8012
/* 06991C 80068D1C 00194823 */ negu $t1, $t9
/* 069920 80068D20 A6490000 */ sh $t1, ($s2)
/* 069924 80068D24 84EA0002 */ lh $t2, 2($a3)
@@ -85,7 +85,7 @@ glabel func_80068BF4
/* 069940 80068D40 01AC6821 */ addu $t5, $t5, $t4
/* 069944 80068D44 000D6880 */ sll $t5, $t5, 2
/* 069948 80068D48 01CD7021 */ addu $t6, $t6, $t5
/* 06994C 80068D4C 85CE0AC4 */ lh $t6, 0xac4($t6)
/* 06994C 80068D4C 85CE0AC4 */ lh $t6, %lo(D_80120AC4)($t6)
/* 069950 80068D50 3C198012 */ lui $t9, %hi(D_80120D15) # $t9, 0x8012
/* 069954 80068D54 01CFC021 */ addu $t8, $t6, $t7
/* 069958 80068D58 A6580004 */ sh $t8, 4($s2)
@@ -173,7 +173,7 @@ glabel func_80069484
/* 06A324 80069724 C7B20044 */ lwc1 $f18, 0x44($sp)
/* 06A328 80069728 25AE0001 */ addiu $t6, $t5, 1
/* 06A32C 8006972C 000E1080 */ sll $v0, $t6, 2
/* 06A330 80069730 3C018012 */ lui $at, 0x8012
/* 06A330 80069730 3C018012 */ lui $at, %hi(D_80120D28) # $at, 0x8012
/* 06A334 80069734 AC8E0000 */ sw $t6, ($a0)
/* 06A338 80069738 00220821 */ addu $at, $at, $v0
/* 06A33C 8006973C 8FBF002C */ lw $ra, 0x2c($sp)
@@ -185,7 +185,7 @@ glabel func_80069484
/* 06A354 80069754 C7A6004C */ lwc1 $f6, 0x4c($sp)
/* 06A358 80069758 46009102 */ mul.s $f4, $f18, $f0
/* 06A35C 8006975C E7B00048 */ swc1 $f16, 0x48($sp)
/* 06A360 80069760 E4260D28 */ swc1 $f6, 0xd28($at)
/* 06A360 80069760 E4260D28 */ swc1 $f6, %lo(D_80120D28)($at)
/* 06A364 80069764 C7A80048 */ lwc1 $f8, 0x48($sp)
/* 06A368 80069768 3C018012 */ lui $at, %hi(D_80120D40) # $at, 0x8012
/* 06A36C 8006976C 00220821 */ addu $at, $at, $v0
@@ -39,7 +39,7 @@ glabel func_80073C5C
/* 0748EC 80073CEC 13000022 */ beqz $t8, .L80073D78
/* 0748F0 80073CF0 00000000 */ nop
/* 0748F4 80073CF4 1736000B */ bne $t9, $s6, .L80073D24
/* 0748F8 80073CF8 3C04800E */ lui $a0, 0x800e
/* 0748F8 80073CF8 3C04800E */ lui $a0, %hi(D_800E7660) # $a0, 0x800e
/* 0748FC 80073CFC 0C033867 */ jal strlen
/* 074900 80073D00 02E02025 */ move $a0, $s7
/* 074904 80073D04 8E040000 */ lw $a0, ($s0)
@@ -52,7 +52,7 @@ glabel func_80073C5C
/* 074920 80073D20 26100004 */ addiu $s0, $s0, 4
.L80073D24:
/* 074924 80073D24 0C033867 */ jal strlen
/* 074928 80073D28 24847660 */ addiu $a0, $a0, 0x7660
/* 074928 80073D28 24847660 */ addiu $a0, %lo(D_800E7660) # addiu $a0, $a0, 0x7660
/* 07492C 80073D2C 8E040000 */ lw $a0, ($s0)
/* 074930 80073D30 3C05800E */ lui $a1, %hi(D_800E7650) # $a1, 0x800e
/* 074934 80073D34 24A57650 */ addiu $a1, %lo(D_800E7650) # addiu $a1, $a1, 0x7650
@@ -323,7 +323,7 @@ glabel MenuAudioOptionsLoop
/* 085D04 80085104 85AD6C46 */ lh $t5, %lo(D_80126C46)($t5)
/* 085D08 80085108 24010001 */ li $at, 1
/* 085D0C 8008510C 15A1000B */ bne $t5, $at, .L8008513C
/* 085D10 80085110 3C058012 */ lui $a1, 0x8012
/* 085D10 80085110 3C058012 */ lui $a1, %hi(D_801269FC) # $a1, 0x8012
/* 085D14 80085114 3C058012 */ lui $a1, %hi(D_801269FC) # $a1, 0x8012
/* 085D18 80085118 24A569FC */ addiu $a1, %lo(D_801269FC) # addiu $a1, $a1, 0x69fc
/* 085D1C 8008511C 8CAE0000 */ lw $t6, ($a1)
@@ -335,7 +335,7 @@ glabel MenuAudioOptionsLoop
/* 085D34 80085134 10000009 */ b .L8008515C
/* 085D38 80085138 8FAF0030 */ lw $t7, 0x30($sp)
.L8008513C:
/* 085D3C 8008513C 24A569FC */ addiu $a1, $a1, 0x69fc
/* 085D3C 8008513C 24A569FC */ addiu $a1, %lo(D_801269FC) # addiu $a1, $a1, 0x69fc
/* 085D40 80085140 8CA40000 */ lw $a0, ($a1)
/* 085D44 80085144 00000000 */ nop
/* 085D48 80085148 10800004 */ beqz $a0, .L8008515C
@@ -545,7 +545,7 @@ glabel MenuTrackSelectInit
/* 08FBCC 8008EFCC 8D6B0410 */ lw $t3, %lo(D_800E0410)($t3)
/* 08FBD0 8008EFD0 8FBF0044 */ lw $ra, 0x44($sp)
/* 08FBD4 8008EFD4 AC2CF494 */ sw $t4, %lo(gIsInAdventureTwo)($at)
/* 08FBD8 8008EFD8 3C018012 */ lui $at, 0x8012
/* 08FBD8 8008EFD8 3C018012 */ lui $at, %hi(D_80126548) # $at, 0x8012
/* 08FBDC 8008EFDC 8FB00020 */ lw $s0, 0x20($sp)
/* 08FBE0 8008EFE0 8FB10024 */ lw $s1, 0x24($sp)
/* 08FBE4 8008EFE4 8FB20028 */ lw $s2, 0x28($sp)
@@ -557,5 +557,5 @@ glabel MenuTrackSelectInit
/* 08FBFC 8008EFFC 8FBE0040 */ lw $fp, 0x40($sp)
/* 08FC00 8008F000 27BD0080 */ addiu $sp, $sp, 0x80
/* 08FC04 8008F004 03E00008 */ jr $ra
/* 08FC08 8008F008 AC2B6548 */ sw $t3, 0x6548($at)
/* 08FC08 8008F008 AC2B6548 */ sw $t3, %lo(D_80126548)($at)
@@ -32,7 +32,7 @@ glabel func_8009CA60
/* 09D6D8 8009CAD8 3C0F800E */ lui $t7, %hi(D_800DF468) # $t7, 0x800e
/* 09D6DC 8009CADC A54C0000 */ sh $t4, ($t2)
/* 09D6E0 8009CAE0 844D0002 */ lh $t5, 2($v0)
/* 09D6E4 8009CAE4 3C108012 */ lui $s0, 0x8012
/* 09D6E4 8009CAE4 3C108012 */ lui $s0, %hi(D_801263A0) # $s0, 0x8012
/* 09D6E8 8009CAE8 A54D0002 */ sh $t5, 2($t2)
/* 09D6EC 8009CAEC 844E0004 */ lh $t6, 4($v0)
/* 09D6F0 8009CAF0 3C058012 */ lui $a1, %hi(D_801263A8) # $a1, 0x8012
@@ -44,7 +44,7 @@ glabel func_8009CA60
/* 09D708 8009CB08 01403825 */ move $a3, $t2
/* 09D70C 8009CB0C E5460010 */ swc1 $f6, 0x10($t2)
/* 09D710 8009CB10 C4480014 */ lwc1 $f8, 0x14($v0)
/* 09D714 8009CB14 260463A0 */ addiu $a0, $s0, 0x63a0
/* 09D714 8009CB14 260463A0 */ addiu $a0, $s0, %lo(D_801263A0)
/* 09D718 8009CB18 E5480014 */ swc1 $f8, 0x14($t2)
/* 09D71C 8009CB1C C44A0008 */ lwc1 $f10, 8($v0)
/* 09D720 8009CB20 3C0C800E */ lui $t4, %hi(D_800DF764) # $t4, 0x800e
@@ -32,7 +32,7 @@ glabel func_800B9228
/* 0B9E98 800B9298 8DAD30D4 */ lw $t5, %lo(D_800E30D4)($t5)
/* 0B9E9C 800B929C 3C05800E */ lui $a1, %hi(D_800E30DC) # $a1, 0x800e
/* 0B9EA0 800B92A0 24A530DC */ addiu $a1, %lo(D_800E30DC) # addiu $a1, $a1, 0x30dc
/* 0B9EA4 800B92A4 3C018013 */ lui $at, 0x8013
/* 0B9EA4 800B92A4 3C018013 */ lui $at, %hi(D_8012A1E8) # $at, 0x8013
/* 0B9EA8 800B92A8 00004812 */ mflo $t1
/* 0B9EAC 800B92AC 01095021 */ addu $t2, $t0, $t1
/* 0B9EB0 800B92B0 8D4B000C */ lw $t3, 0xc($t2)
@@ -47,7 +47,7 @@ glabel func_800B9228
/* 0B9ED4 800B92D4 24030001 */ li $v1, 1
/* 0B9ED8 800B92D8 0004C040 */ sll $t8, $a0, 1
/* 0B9EDC 800B92DC 00380821 */ addu $at, $at, $t8
/* 0B9EE0 800B92E0 A422A1E8 */ sh $v0, -0x5e18($at)
/* 0B9EE0 800B92E0 A422A1E8 */ sh $v0, %lo(D_8012A1E8)($at)
/* 0B9EE4 800B92E4 24990001 */ addiu $t9, $a0, 1
/* 0B9EE8 800B92E8 ACB90000 */ sw $t9, ($a1)
.L800B92EC:
@@ -128,7 +128,7 @@ glabel func_800BA288
/* 0BB058 800BA458 008F7021 */ addu $t6, $a0, $t7
/* 0BB05C 800BA45C 01C33821 */ addu $a3, $t6, $v1
/* 0BB060 800BA460 90F90014 */ lbu $t9, 0x14($a3)
/* 0BB064 800BA464 3C038013 */ lui $v1, 0x8013
/* 0BB064 800BA464 3C038013 */ lui $v1, %hi(D_8012A0E0) # $v1, 0x8013
/* 0BB068 800BA468 03254021 */ addu $t0, $t9, $a1
/* 0BB06C 800BA46C 29010080 */ slti $at, $t0, 0x80
/* 0BB070 800BA470 10200006 */ beqz $at, .L800BA48C
@@ -140,7 +140,7 @@ glabel func_800BA288
/* 0BB088 800BA488 24420001 */ addiu $v0, $v0, 1
.L800BA48C:
/* 0BB08C 800BA48C A0F10014 */ sb $s1, 0x14($a3)
/* 0BB090 800BA490 8C63A0E0 */ lw $v1, -0x5f20($v1)
/* 0BB090 800BA490 8C63A0E0 */ lw $v1, %lo(D_8012A0E0)($v1)
/* 0BB094 800BA494 00000000 */ nop
.L800BA498:
/* 0BB098 800BA498 24420001 */ addiu $v0, $v0, 1
@@ -1,6 +1,6 @@
glabel func_800C4DA0
/* 0C59A0 800C4DA0 14800003 */ bnez $a0, .L800C4DB0
/* 0C59A4 800C4DA4 3C188013 */ lui $t8, 0x8013
/* 0C59A4 800C4DA4 3C188013 */ lui $t8, %hi(D_8012A7E4) # $t8, 0x8013
/* 0C59A8 800C4DA8 03E00008 */ jr $ra
/* 0C59AC 800C4DAC 00001025 */ move $v0, $zero
@@ -13,7 +13,7 @@ glabel func_800C4DA0
/* 0C59C4 800C4DC4 91C6001D */ lbu $a2, 0x1d($t6)
/* 0C59C8 800C4DC8 00000000 */ nop
.L800C4DCC:
/* 0C59CC 800C4DCC 8F18A7E4 */ lw $t8, -0x581c($t8)
/* 0C59CC 800C4DCC 8F18A7E4 */ lw $t8, %lo(D_8012A7E4)($t8)
/* 0C59D0 800C4DD0 90990000 */ lbu $t9, ($a0)
/* 0C59D4 800C4DD4 00067A80 */ sll $t7, $a2, 0xa
/* 0C59D8 800C4DD8 1320003D */ beqz $t9, .L800C4ED0
+2
View File
@@ -28,6 +28,8 @@ glabel D_800E7640
glabel D_800E7650
.aligned_text "DKRACING-TIMES"
glabel D_800E7660
.aligned_text "DKRACING-TIMES"
glabel D_800E7670
+6 -2
View File
@@ -2,13 +2,17 @@ import re
from file_util import FileUtil
# Maximum number of lines between a glabel's upper/lower usage to look for.
MAX_LINE_DIFF = 10
LINE_START_REGEX = r'\n(/\* ([0-9A-F]{6}) [0-9A-F]{8} [0-9A-F]{8} \*/\s+|\.L80[0-9A-F]{6}:)?'
REG_REGEX = r'(\$(at|v[0-1]|a[0-3]|t[0-9]|s[0-7]|f[0-9]{1,2}|k[01]|gp|sp|fp|ra|zero))'
GLABEL_UPPER_REGEX = '(' + LINE_START_REGEX + r'lui\s+' + REG_REGEX + r',\s+(0x80[0-9a-f]{2}))'
GLABEL_LOWER_LS_REGEX = r'[sl][bhwd](u|c1)?\s+' + REG_REGEX + r',\s+(-?0x[0-9a-f]{3,4})\(\4\)'
GLABEL_LOWER_ADDU_REGEX = r'addiu\s+' + REG_REGEX + r',\s+\4,\s+(-?0x[0-9a-f]{3,4})'
GLABEL_LOWER_REGEX = LINE_START_REGEX + '(' + GLABEL_LOWER_LS_REGEX + '|' + GLABEL_LOWER_ADDU_REGEX + ')'
GLABEL_REGEX = GLABEL_UPPER_REGEX + '(' + LINE_START_REGEX + '[^\n]*){0,10}' + GLABEL_LOWER_REGEX
GLABEL_REGEX_STR = GLABEL_UPPER_REGEX + '(' + LINE_START_REGEX + '[^\n]*){0,' + str(MAX_LINE_DIFF) + '}' + GLABEL_LOWER_REGEX
GLABEL_REGEX = re.compile(GLABEL_REGEX_STR)
UPPER_INSTR_REGEX_TMPL = r'(/\* %s[^\n#]*lui\s+)([^\n]*)'
LOWER_INSTR_LS_REGEX_TMPL = r'(/\* %s[^\n#]*[ls][bhwd](u|c1)?\s+' + REG_REGEX + r',\s+)-?0x[0-9a-f]{3,4}([^\n]*)'
@@ -22,7 +26,7 @@ def _find_glabels(asm):
for file in FileUtil.get_filenames_from_directory_recursive('.', '.s'):
#'''
contents = FileUtil.get_text_from_file(file)
matches = re.findall(GLABEL_REGEX, contents)
matches = GLABEL_REGEX.findall(contents)
for match in matches:
reg = match[3]
offsets = (match[2], match[10]) # ROM offsets of the lui and [sl][bhw]
+1
View File
@@ -1561,6 +1561,7 @@ D_800E7584 = 0x800E7584;
D_800E7630 = 0x800E7630;
D_800E7640 = 0x800E7640;
D_800E7650 = 0x800E7650;
D_800E7660 = 0x800E7660;
D_800E7670 = 0x800E7670;
D_800E7680 = 0x800E7680;
D_800E7690 = 0x800E7690;