Skip to content

Releases: Decompollaborate/spimdisasm

1.24.0

26 Mar 00:04
2f9dd25
Compare
Choose a tag to compare

[1.24.0] - 2024-03-25

Added

  • Add EEGCC compiler option.
  • Add KMC compiler option.

Changed

  • Emit .align 3 directives for strings for EEGCC compiler.
  • Emit .align 3 directives for functions for EEGCC compiler.
  • Refactor Compiler to make implementing per-compiler differences more easily.

1.23.1

22 Mar 15:34
dd6759d
Compare
Choose a tag to compare

[1.23.1] - 2024-03-22

Fixed

  • Fix rodata symbols referencing symbols that it should not reference.
    • Symbols like functions with addends, branch labels (not to be confused with
      jumptable labels), etc.

1.23.0

19 Mar 13:01
df1b4a7
Compare
Choose a tag to compare

[1.23.0] - 2024-03-19

Added

  • Symbols are now quoted if they contain special characters.
    • The symbol will be quote if any of the following characters in contained on
      the symbol name: @, <, \\, - or +.
  • FileBase.sectionFlags: allows to specify flags for the specific section.
  • SectionBase.enableStringGuessing: Allows to toggle the string guessing at
    the section level.
    • This option is ignored if the global string guessing option is disabled.
  • SectionBase.typeForOwnedSymbols: Allows to specify that all the symbols from
    the current section should have the same type.
    • Does not override user declared types for symbols on the section.
  • SectionBase.sizeForOwnedSymbols: Allows to specify that all the symbols from
    the current section should have the same size.
    • Does not override user declared sizes for symbols on the section.
  • Add MWCC compiler option.

Changed

  • SectionRelocZ64 now emits "a" flag as the section flag.
  • Make sure to not reference local branch labels on data symbols.
  • Minor code cleanups

1.22.0

08 Mar 19:16
a1fee33
Compare
Choose a tag to compare

[1.22.0] - 2024-03-08

Added

  • New options:
    • Add ASM_GLOBALIZE_TEXT_LABELS_REFERENCED_BY_NON_JUMPTABLE.
      • Forces the use of ASM_JTBL_LABEL on text labels that are referenced by
        non jumptables.
      • Turned off by default.
        • Not enabled by default since this may be a symptom of something
          misconfigured or fake refences, since nothing besides jumptables should
          be able to reference labels inside a function.
  • Add libleo (64DD) hardware registers to the list of known N64 hardware
    registers.

Changed

  • Change the logic for emitting the alignment directives.
    • Now the address of the symbol must be aligned relative to the file where
      the symbol is, instead of requiring both the symbol and the file to be
      aligned independently.
    • This should be specially useful for PSX projects, since the compiler aligns
      jumptables to 8, but it doesn't impose alignment restrictions on files,
      meaning the files (and those jumptables) may end up aligned to a lower
      alignment.
  • Avoid filtering out user declared symbols when they are outside the valid
    address space.

Fixed

  • Fix missing type hints

1.21.0

09 Feb 00:53
e9e0779
Compare
Choose a tag to compare

[1.21.0] - 2024-02-08

Added

  • Add ContextSymbol.allowedToReferenceSymbols.
    • Allow or prohibit this symbol to reference other symbols.
  • Add ContextSymbol.allowedToBeReferenced
    • Allow or prohibit this symbol to be referenced by other symbols.
  • Add FunctionRodataEntry.getName method.
  • Add FileBase.sectionAlignment.
    • Allows to customize the alignment of the section.
  • New options:
    • --asm-prelude-use-includes /
      GlobalConfig.ASM_PRELUDE_USE_INCLUDES: Emits the .include directive on
      the asm prelude.
    • --asm-prelude-use-assembler-directives /
      GlobalConfig.ASM_PRELUDE_USE_INSTRUCTION_DIRECTIVES: Emits instruction
      assembler directives.
    • --asm-prelude-use-section-start /
      GlobalConfig.ASM_PRELUDE_USE_SECTION_START: Emit the start of a section
      and alignment directive.

Changed

  • Data symbols: Emit the original word inside the emitted comment.
  • Force SectionRelocZ64's generated symbols to always be disassembled as
    .words.
  • Disallow SectionRelocZ64's generated symbols to reference other symbols or
    to be referenced by other symbols.
  • Autogenerated symbols from SectionRelocZ64 will only use the stem of the
    section's filename.
  • Assembler directives that only have meaning for instructions are only emitted
    on .text sections.

Fixed

  • Fix default string encoding for .data section.

1.20.1

28 Jan 19:58
5cb2900
Compare
Choose a tag to compare

[1.20.1] - 2024-01-28

Added

  • Perform a range check on all .data symbols that have a user declared size.
    • This checks for the size of the symbol to not be smaller than the user
      declared size.
    • If the size doesn't match then a warning is printed to stderr or halt
      execution if GlobalConfig.PANIC_RANGE_CHECK is turned on.
  • Add issue templates for bug reports and feature suggestions.
  • Add --rodata-string-encoding and --data-string-encoding CLI options.

Changed

  • Format the range check message of .bss symbols similarly to how the .data
    range check is formatted.

Fixed

  • Fix missing comment terminator on assembly prelude.

1.20.0

25 Dec 03:11
1baae9d
Compare
Choose a tag to compare

[1.20.0] - 2023-12-25

Added

  • Add --name-vars-by-file option to rename data symbols based on their offset
    and in their containing file.
  • Add --name-vars-by-section considers the .text and .ovl/.reloc sections.
    • For unknown .text symbols (that are not functions, or any kind of label)
      the T_ prefix will be used.
    • For .ovl/.reloc symbols the REL_ prefix will be used

Changed

  • File splits can now contain reloc sections (.ovl or .reloc).
  • Type-based name generation (--name-vars-by-type) can now be mixed with
    other kinds of name generations, allowing to give extra information on the
    symbol name.
  • Autogenerated symbol names will not use a suffix if said symbol is generated
    after another symbol or file.
  • Do not try to symbolize an address as a symbol plus addend if the original
    address is a banned address.
  • Recognize volatile type variants as aliases for the non volatile
    versions.
    • For example, vs16 is recognized as a .short.
  • Use C style comments over # since that is more widely supperted.
    • For example Clang doesn't seem to support # comments.

1.19.0

04 Dec 16:18
04249af
Compare
Choose a tag to compare

[1.19.0] - 2023-12-04

Added

  • Try to detect when instructions are setting the $gp register with the
    passed GP_VALUE and use the _gp symbol instead of symbolizing an
    unrelated symbol.
    • This check is only applied on non PIC mode.
  • Track if a symbol is accessed with a %gp_rel.
  • Add --sequential-label-names option to rename branch and jump table labels
    after their containing function (#142).

Changed

  • Emit which symbol produced the generation of an automatically generated and
    unused pad.
  • Change how the variables csv file is parsed: If the size column is either
    empty, a dash (-) or zero then that column is ignored.
  • Autogenerated symbol names are now padded up to 8 hex digits, contrary to the
    old 6 hex digits.
    • Since this may be a breaking change for some people the old functionallity
      can be restored by enabling the GlobalConfig.LEGACY_SYM_ADDR_ZERO_PADDING
      setting, or by passing --legacy-sym-addr-zero-padding when invoking a
      command line front-end.

Deprecated

  • GlobalConfig.LEGACY_SYM_ADDR_ZERO_PADDING (and the CLI version
    --legacy-sym-addr-zero-padding) are deprecated.
    • There's no replacement for this option.

Fixed

  • Avoid using the wrong immediate for gp-relative references if the address
    could not be symbolized.
    • In example, if said address is outside of the known address range.
  • Fix some niche cases where spimdisasm may emit duplicated data symbol labels
    but without their data.

1.18.0

29 Oct 14:53
44aa429
Compare
Choose a tag to compare

[1.18.0] - 2023-10-29

Added

  • Add option to rename the sections generated by FunctionRodataEntry
    • FunctionRodataEntry.sectionText to rename the .text section
    • FunctionRodataEntry.sectionRodata to rename the .rodata section
    • FunctionRodataEntry.sectionLateRodata to rename the .late_rodata section

1.17.4

07 Oct 14:19
b48eed5
Compare
Choose a tag to compare

[1.17.4] - 2023-10-07

Added

  • Add CHANGELOG.md

Fixed

  • Fix not decoding some valid Japense strings on decodeBytesToStrings
    • Specifically SHIFT-JIS ones with raw characters 0x8C and 0x8D