News: 11 March 2016 - Forum Rules

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - KC

Pages: [1]
1
Programming / armips assembler (v0.7c released!)
« on: June 18, 2009, 02:39:02 pm »
Update: PSX and GBA/NDS support is done now. You can download it here.

I've worked on this for quite a while now. After multiple rewrites and a longer break, I think it's almost ready to be released. I'm not sure when it will be done, but if everything goes as planned, it should be in the foreseeable future.
It is intended to be a very romhacking friendly assembler for PSX and also GBA/NDS. My main motivation to write this was the lack of virtually any decent assembler for PSX. You can insert and overwrite code into existing files, add cross-references between overlays and insert everything at once.

Currently implemented features:
  • full-fledged C-like infix expression parser
  • opening any file with any given memory offset. The content is not deleted and only the desired changes are applied. You can create/overwrite a file, too, though
  • you can also open multiple files in a row and cross-reference them. This was done in order to support overlays
  • local labels that are only valid until the next global label
  • table support
  • the complete MIPS r3000 instruction set for PSX
  • a couple of hard-coded MIPS macros to make writing code easier:
    • load immediate: li a0,0xDEADBEEF
    • load/write from/to offset: sw a0,0x80001000
    • unaligned load/store: ush a0,(a1)
    • branches: blt a0,0x100,Start
    • rotate: ror a0,a1,8
  • checks for load delay problems. As every load is delayed by 1 cycle, the loaded value is not immediately available. The following code would generate a warning:
       lw   v0,(v0)
       addiu   v0,1h
  • also an optional automatic fix for said problem. If enabled, the assembler will insert a nop whenever it encounters such a problem:
       lw   v0,(v0)
       nop
       addiu   v0,1h
  • optional output of all the labels to a given text file
  • optional output of all the generated code, complete with address in memory and origin, to a given text file
  • user defined macros
  • THUMB instruction set for GBA and NDS
  • complete ARM support for GBA and NDS

Planned features:
  • an area directive that takes amaximum size and generates an error if it's overflown
  • support for N64 and PS2

It would be nice to hear what you think about it, and also further feature requests. I can't guarantee that I will add anything, but I will consider every suggestion.

Pages: [1]