1.5. The disassembler

The disassembler is the main view you have on the game's memory. The order of the items in the disassembler is:

Text Value Address Disassembled instruction

The text part of the disassembler shows the contents of memory converted to ASCII text; the value part is shown in hex. The address is shown in the middle (rather than on the left, so you can line it up with the instruction more easily).

Choose a list in the 'Use list' field and all the visible addresses included in that list will be highlighted in red, as above. If you click on the address with Adjust, the address will be toggled in or out of the list. Use the List arrows next to the List selector to move the disassembler through addresses in the list: the inner arrows move through the addresses one by one, and the outer arrows move to the first and last addresses in the list.

You can also move to a different address by entering the address in the Goto field and pressing Return on clicking on Goto. Also, if an instruction refers to another address - for example, a branch instruction or a load/ store instruction, you can move the disassembler to that address by holding down Shift and clicking Select on the instruction. You can go back to the last instruction you jumped from in this way by clicking on 'Goto last' on the button bar - this is useful for investigating and returning from subroutines.

To print a section of disassembled code, open the disassembler window and choose 'Print'. Enter a range of addresses to disassemble between and click on 'Print'.

Because everyone writes assembler code in different ways, Desktop Hacker can disassemble in different styles. The disassembly style is set from the Choices window.

The register set is chosen on the left. As well as the normal register names with or without R12 to R15 renamed, Desktop Hacker can use the APCS register set, which is nice if you like that sort of thing. (I don't.)

On the right, the case of the disassembled instructions can be set to your own personal style. Upper and lower case mnemonics and registers may be set separately; there is also a mixed case mnemonics option, wherein the only the first letters of mnemonics, condition codes and flags are capitalised. I like this, but some people think it is evil. S'what options are for, innit?

--) /!\ Configuring the interface
(-- Reserving memory and screen memory
/\ Running Desktop Hacker

23rd April 1998