This project is dedicated to the memory of William Morris (aka Frags), who was the main contributor to the bounty but was unable to see the final result.

Monday, June 4, 2012

God Save the Queen

Thank you dear Queen Elizabeth II that Your Majesty has birthday, just like us, puny humans do. Even if it is not on this day yet we got a day off to celebrate in New Zealand too. (Well, logic is not a strong point of human society.)

So, I decided to celebrate Her Majesty's birthday by doing some coding.

The update is a little bit short and not too interesting, just a couple more instructions implemented:
  • Implementation of
    ADDQ.x #imm,Ay,
    ADDA.x #immq,Ay,
    ADDQ.W, ADDQ.B,
    OR.x reg,reg,
    MOVEA.x mem,mem,
    MOVEA.x mem,Ay,
    MOVE.x mem,Dy,
    SWAP instructions.
  • Added support for saving registers to the stack frame temporarily.
  • Fix for SWAP (and other not yet implemented instructions) with one register parameter only: use destination instead of source addressing mode.
  • Added missing object to the configure script for the PowerPC disassembler and moved the header file for it to the includes folder where it belongs.
Funny story, though... I thought I had found a bug in Petunia while I implemented the moving and adding instructions where the target is an address register. Then I realized that address registers are always treated as longword sized, no matter what the size of the operation is.
But I already knew that and implemented it properly in Petunia. I just forgot about it, because it was 11 years ago! :)