ethteck / splat

A binary splitting tool to assist with decompilation and modding projects
MIT License
149 stars 41 forks source link

Don't set mips_abi_float_regs in create_config script #349

Closed mkst closed 4 months ago

mkst commented 4 months ago

also align the allowed values with the same values as spimdisasm.

AngheloAlf commented 4 months ago

Why remove this? I think most of the n64 compilers we support the o32 abi float regs in one way or another. They are easier to read and overall make more sense

mkst commented 4 months ago

Someone in the public discord was experiencing where gnu as was choking on these registers:

(MyEnv) san@san:~/ssbd$ mips-linux-gnu-as -Iinclude -march=vr4300 -mabi=32 -o bin/ovl7.o asm/ovl7.s
asm/ovl7.s: Assembler messages:
asm/ovl7.s:439: Error: invalid operands `mtc1 $zero,$fv0'
asm/ovl7.s:445: Error: invalid operands `mtc1 $at,$ft0'
asm/ovl7.s:451: Error: invalid operands `swc1 $fv0,0x30($sp)'
asm/ovl7.s:452: Error: invalid operands `swc1 $fv0,0x28($sp)'
AngheloAlf commented 4 months ago

Since they are using modern gas to assemble files then they should slap this on their macro.inc file

# Float register aliases (o32 ABI, odd ones are rarely used)

.set $fv0,          $f0
.set $fv0f,         $f1
.set $fv1,          $f2
.set $fv1f,         $f3
.set $ft0,          $f4
.set $ft0f,         $f5
.set $ft1,          $f6
.set $ft1f,         $f7
.set $ft2,          $f8
.set $ft2f,         $f9
.set $ft3,          $f10
.set $ft3f,         $f11
.set $fa0,          $f12
.set $fa0f,         $f13
.set $fa1,          $f14
.set $fa1f,         $f15
.set $ft4,          $f16
.set $ft4f,         $f17
.set $ft5,          $f18
.set $ft5f,         $f19
.set $fs0,          $f20
.set $fs0f,         $f21
.set $fs1,          $f22
.set $fs1f,         $f23
.set $fs2,          $f24
.set $fs2f,         $f25
.set $fs3,          $f26
.set $fs3f,         $f27
.set $fs4,          $f28
.set $fs4f,         $f29
.set $fs5,          $f30
.set $fs5f,         $f31

They are bound to have a macro.inc file either way, since splat relies on it for stuff like glabel