I forgot to say that the dataflow list is what you probably guessed: an attempt to specify which of the register arguments to the opcode macros are inputs, and which are outputs. I want to use that for some extra checking ("Rn is unreferenced" or "Rn maybe used uninitialized") and to implement register allocation by setting up a set of constraints, each represented by user-defined variable, and solving the constraints like a sudoku puzzle, maybe. Apparently it is quite quick of you search the most highly constrained variables first. This is just a guess though. Another whacky approach might be to specify the constraints as Prolog terms and throw Harrison's Prolog interpreter at some likely-looking rules. But I am talking out of my hat, really ...
Nevertheless ... it would be nice of we _could_ have the register allocation algorithm described by a formal language, if not Prolog, then a bit like Prolog, because then we would only need to specify the interpreter, as two parts: a resolution solver and a search strategy, say. Then we would have a spec of lightning register allocation that (a) could be changed and easily experimented with, and (b) automatically implemented in any language for which we have written the list functionals like map, find, partition, etc.
And so on and so forth ... I am feeling like I have said rather a lot on these two list lately and should shut up for a while ...
Ian