Kingcom / armips

An assembler for various ARM and MIPS platforms. Builds available at http://buildbot.orphis.net/armips/
MIT License
363 stars 77 forks source link

.importsym #224

Open Prof9 opened 2 years ago

Prof9 commented 2 years ago

This adds the .importsym directive which lets you import a pre-existing symfile. This is pretty useful when you have a base symfile for a game and you want to merge all your new labels into it.

Currently this enforces No$gba semantics where each address must be exactly 8 characters. I'm not sure if sym2 format symfiles allow for different lengths; if so, the restriction could probably be removed.

Also, this doesn't remove or change any data in the output symfile that's overwritten by armips. E.g., you have a memory region that's defined as a data pool and you write a function in there instead, the original data pool definition will be copied to the output symfile as-is (in addition to any new labels you placed in that region). I don't think this is a big problem, though.

.importsym SymFile

Imports all symbols from the existing symfile specified by SymFile. For any symbols in SymFile not starting with ., @ or @@, a global label will be created, which can be used like any other label. Regardless of prefix, all symbols and directives in SymFile are also written to the main output symfile for this run of armips, if symfile writing is enabled. This directive terminates the scope for local labels and equs.