Mon Apr 20 12:00:18 CEST 2009
What about this: simply require some basic ops to be pseudo
instructions (which cannot be overridden) and require the elimination
of these in the machine definition.
That way there is no "inner" dependency on the machine's assembler:
the machine's compiler will eliminate all virtual code in terms of
which the core compiler and macro language are defined.
So.. Let's define the virtuals once and for all in coma/core.ss
Aha. The problem is that when in different modules, names _can_ be
redefined, since they are independent. It is only visible globally in
the asm register.
So, I'm confident I can pull this off and change the pattern matching
and assembler so they don't need the hash any more. Dependencies will
just roll out.
Next: change instruction representation. Maybe it's best to just
stick with replacing the symbol with an abstract rep. Maybe just the
Matcher + op transformers compile.
Matchers seem to work too:
box> (macro> 1)
box> (macro> 1 2)
box> (macro> 1 2 +)
[#<asm> (1 2 +)]
moving into assembler.ss now -> getting rid of asm-find
hmm.. assembler needs to know (ns (asm) nop) -> set to 0000 for now.
looks like the basic change works, just some rules won't match.
ha.. silly match bug: matches never failed.
ok. now removing asm-register! and asm-find