Skip to content

Conversation

@AetiasHax
Copy link
Contributor

I recently rewrote unarm to address several issues with it. The noteworthy effects on objdiff are:

  • Vastly reduced code size and compilation time
  • VFPv2 support (floating-point instructions, notably used by 3DS games)
  • Less code in arm.rs, more things are handled by unarm now
    • No more combining 4-byte Thumb instructions manually
    • No more formatting other than deciding how arguments are converted into InstructionParts
  • Slight performance difference
    • Parsing an instruction is slower due to additional correctness checks (ARM version, extensions, illegal values etc.)
    • Formatting instructions is faster due to fewer loops/branches and better use of traits
    • All in all, a small but not so noticeable performance loss

@encounter
Copy link
Owner

This shaves off ~0.5MB from the binary size, impressive! And a much cleaner arm.rs. Thanks!

@encounter encounter merged commit 19ec08b into encounter:main Oct 13, 2025
24 checks passed
@AetiasHax AetiasHax deleted the unarm-2.0 branch October 13, 2025 14:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants