Sat Apr 18 12:56:55 CEST 2009
don't mix side-effects and streams..
The problem is context-dependency of the disassembler on the current
code pointer, which probably doesn't work well with parameterization..
The result of disassembly seems to be correct, but i doubt it really
does what i think it does.. Maybe the parameter should be pushed
No, let's do this properly: all dasm words get passed as a first
argument the current code location.
the PC that's plugged into a disassembler, should it be the location
of the instruction, or the value of the PC when the instruction
executes (pointing _past_ the instruction)?
Let's stick as close as possible to the machine definition: PC should
point after the instruction.
* assume that PCR addressing mechanism is the same for all
architectures of interest. if not, this should be
parameterized in operand.ss
* make the assemblers referentially transparent.
Problem: when invoking the assembler, the next position of the PC is
not known, so we can't use this! The transformation from instruction
address -> PC is done in the macro, which knows instruction sizes.