Revamp disassembler's instruction-defining macros.
commitb09347afc5b6706f1ec7fe280aa37b5dd2223df8
authorDouglas Katzman <dougk@google.com>
Tue, 12 Jan 2016 03:28:04 +0000 (11 22:28 -0500)
committerDouglas Katzman <dougk@google.com>
Tue, 12 Jan 2016 03:41:04 +0000 (11 22:41 -0500)
treec44b9e03cfce74bf0d32a2048f35ca582aa43253
parent34b24dab3aaf242c7b1ce12fdb397dc8fa19d716
Revamp disassembler's instruction-defining macros.

All uses of the baffling VALSRC structures are eliminated,
many uses of (EVAL-WHEN (:COMPILE-TOPLEVEL) ...) become unnecessary,
and the code-folding optimization is far simpler.

Compile-time definitions for :PRINTER, :PREFILTER, and :LABELLER options
are never needed. The helper functions resulting from FIND-PRINTER-FUN etc
are not compiled during cross-compilation, but instead just-in-time when
DISASSEMBLE is invoked by the user. Disassembly of any given instruction
format has a slight delay the first time it's encountered, but it's not
bad, and if anyone cared, precompilation could be easily be done.
[One suggestion was that compilation not be done at all, but then we'd
need to make an interpreter for abstract printer specs, or else interpret
a subset of Lisp code resulting therefrom without relying on EVAL]
src/compiler/assem.lisp
src/compiler/disassem.lisp
src/compiler/ppc/insts.lisp
src/compiler/sparc/insts.lisp
src/compiler/target-disassem.lisp
src/compiler/x86-64/insts.lisp
src/compiler/x86/insts.lisp