Improved to the point where it compiles Michael's verticality demo.
[m68k-assembler.git] / README
blob28998c06e376790ade0926e900aafabdaa6f206a
2 The goal of this assembler is to eventually not be simply an M68K
3 assembler, but to be relatively easily retargetable.  Also, this
4 assembler should be callable from other CL applications, as well as
5 executable as a stand-alone program.
8 Things to add in the grammar/parser/lexer:
10 Support for ' (single ASCII character?) -- only because the
11         book I have says it's part of Motorola's standard.  Should it
12         behave like double-quotes or what?
13 Support for floats (once FPU instructions are supported).
14 Line continuations with "\".
15 Literate input.
18 Things to add in the assembler:
20 Checking ranges of types, signed indices, etc.
21         Also, type checking information stored in the symbol table.
22 Output listings (with cycle counts, et cetera).
23 Add better PC-relative stuff (.+6 or *+42 notation f.ex).
24 Support for later chips in the m68k line, and enabling/disabling
25         allowance of their added instructions.
26 Change lookup tables so that on load, they get converted to hash
27         tables or whatever's appropriate.
28 Nifty local labels a-la GNU as or similar.  (0f, 1b, etc)
29 CL-style macros?  (that would be cool!)
30 Debugger info.
31 Output in object formats other than A.OUT.
32 Optimizations/data flow analysis.
33 Optional lispy object format.  (see st-linker README)
34 ADDI instead of ADD in certain cases.
37 THINGS TO DO BEFORE RELEASE
39 - remove debugging output.
40 - add a decent warning/error display and logging system.
41 - compile list of known issues, try to resolve.
42 - start converting improvised list structure into real structures or
43   objects.
44 - put together a basic automated test suite.
45   (once object format has settled down, start a set of regression files,
46    with sane output verified by hand.)
47 - skim all XXXs.
48 - once a better warning system is in place, allow routines like
49 MODIFIER-BITS to guess the size of underspecified operations, and warn
50 about them at suitable warning levels.
51 - test with sourcer68 output of various files.
52 - Things to test about relocation:
53         are 8-bit indirect displacements being relocated correctly?
54         verify all possible relocation combinations.    
55 - Update dependencies in ASDF file so that it compiles without warnings.
56 - *last-label* feels like a hack.  See if there's an alternative.
57 - add raw binary output.  (also, to linker.)
58 - DC needs some serious cleanups.
59 - undo some of the intentional braindamage induced to make us closer
60   to devpac.
64 KNOWN ISSUES
66 - macro parameters are broken.  At least, <foo> style ones are still
67   broken.  [assembler]
68 - no checking of vconstraints yet. [codegen]
69 - Unfinished pseudo-ops:
70         EQUR
71         DCB
72         END
73         IFxx
74 - branch-displacement-bits will behave badly in some unusual situations.
75 - requires that the file end with a newline, and there is no warning
76   that the last line is ignored.
79 KNOWN MAJOR INCOMPATIBILITIES WITH DEVPAC
81 These are things which aren't likely to change soon.
83 Macros:
85 - we don't support < or > embedded in macro parameters which are
86   already wrapped in < and >.  (eg: "<foo>>>>2>" => "foo>>2") [lexer]
89 ENHANCEMENTS FROM DEVPAC
91 - We support EXTERN/GLOBAL as synonyms for XREF/XDEF,
92   respectively.  Also ALIGN as a simple version of CNOP.