Releases: Decompollaborate/spimdisasm
Releases · Decompollaborate/spimdisasm
1.24.0
[1.24.0] - 2024-03-25
Added
- Add
EEGCC
compiler option. - Add
KMC
compiler option.
Changed
- Emit
.align 3
directives for strings forEEGCC
compiler. - Emit
.align 3
directives for functions forEEGCC
compiler. - Refactor
Compiler
to make implementing per-compiler differences more easily.
1.23.1
[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.
- Symbols like functions with addends, branch labels (not to be confused with
1.23.0
[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+
.
- The symbol will be quote if any of the following characters in contained on
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
[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.
- Not enabled by default since this may be a symptom of something
- Forces the use of
- Add
- 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.
- Now the address of the symbol must be aligned relative to the file where
- Avoid filtering out user declared symbols when they are outside the valid
address space.
Fixed
- Fix missing type hints
1.21.0
[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
.word
s. - 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
[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 ifGlobalConfig.PANIC_RANGE_CHECK
is turned on.
- This checks for the size of the symbol to not be smaller than the user
- 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
[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)
theT_
prefix will be used. - For
.ovl
/.reloc
symbols theREL_
prefix will be used
- For unknown
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 nonvolatile
versions.- For example,
vs16
is recognized as a.short
.
- For example,
- Use C style comments over
#
since that is more widely supperted.- For example Clang doesn't seem to support
#
comments.
- For example Clang doesn't seem to support
1.19.0
[1.19.0] - 2023-12-04
Added
- Try to detect when instructions are setting the
$gp
register with the
passedGP_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).- Thanks @cadmic
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 theGlobalConfig.LEGACY_SYM_ADDR_ZERO_PADDING
setting, or by passing--legacy-sym-addr-zero-padding
when invoking a
command line front-end.
- Since this may be a breaking change for some people the old functionallity
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
[1.18.0] - 2023-10-29
Added
- Add option to rename the sections generated by
FunctionRodataEntry
FunctionRodataEntry.sectionText
to rename the.text
sectionFunctionRodataEntry.sectionRodata
to rename the.rodata
sectionFunctionRodataEntry.sectionLateRodata
to rename the.late_rodata
section
1.17.4
[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
and0x8D
- Specifically SHIFT-JIS ones with raw characters