summaryrefslogtreecommitdiff
path: root/Wishlist
diff options
context:
space:
mode:
Diffstat (limited to 'Wishlist')
-rw-r--r--Wishlist225
1 files changed, 195 insertions, 30 deletions
diff --git a/Wishlist b/Wishlist
index 197b113b..b1529bfe 100644
--- a/Wishlist
+++ b/Wishlist
@@ -1,23 +1,168 @@
NASM Wishlist
=============
-- forward-reference tracking is instruction-granular not operand-
- granular. Bummer.
+Numbers on right hand side are version numbers that it would be nice to
+have this done by. ? means I haven't looked at it yet.
-- see if BITS can be made to do anything sensible in obj (eg set the
+- Create a binary RDF tools distribution. Should probably be distributed 0.98
+ seperately.
+
+- Check misc/ide.cfg into RCS as Watcom IDE enhancement thingy. 0.98
+ (nop@dlc.fi)
+
+- Package the Linux Assembler HOWTO. 0.98
+
+- AMD 3dNow extensions need documenting. 0.98
+
+- prototypes of lrotate don't match in test/*. Fix. 0.98
+
+- Build djgpp binaries for 0.98 onwards. Look into PMODE/W as a stub 0.98
+ - it might be a lot better than CWSDPMI. It's in PMW133.ZIP.
+
+- Fix `%error' giving error messages twice. 0.99
+ Not especially important, as changes planned for 1.1x below will make
+ the preprocessor be only called once.
+
+- Sort out problems with OBJ: 0.99
+ * TLINK32 doesn't seem to like SEGDEF32 et al. So for that, we
+ should avoid xxx32 records wherever we can.
+ * However, didn't we change _to_ using xxx32 at some stage? Try
+ to remember why and when.
+ * Apparently Delphi's linker has trouble with two or more
+ globals being defined inside a PUBDEF32. Don't even know if it
+ _can_ cope with a PUBDEF16.
+ * Might need extra flags. *sigh*
+
+- Symbol table output may possibly be useful. 0.99
+ Ken Martwick (kenm@efn.org) wants the following format:
+ labelname type offset(hex) repetition count
+ Possibly include xref addresses after repetition count?
+
+- There are various other bugs in outelf.c that make certain kinds 0.99
+ of relocation not work. See zbrown.asm. Looks like we may have to do
+ a major rewrite of parts of it. Compare some NASM code output with
+ equivalent GAS code output. Look at the ELF spec. Generally fix things.
+
+- NASM is currently using a kludge in ELF that involves defining 0.99
+ a symbol at a zero absolute offset. This isn't needed, as the
+ documented solution to the problem that this solves is to use
+ SHN_UNDEF.
+
+- Debug information, in all formats it can be usefully done in. 0.99
+ * including line-number record support.
+ * "George C. Lindauer" <gclind01@starbase.spd.louisville.edu>
+ wants to have some say in how this goes through.
+ * Andrew Crabtree <andrewc@rosemail.rose.hp.com> wants to help out.
+
+- Think about a line-continuation character. 0.99
+
+- Consider allowing declaration of two labels on the same line,
+ syntax 'label1[:] label2[:] ... instruction'. Need to investigate
+ feasibility. 0.99
+
+- Quoting of quotes by doubling them, in string and char constants. 0.99
+
+- Two-operand syntax for SEGMENT/SECTION macro to avoid warnings 0.99
+ of ignored section parameters on reissue of __SECT__.
+ Or maybe skip the warning if the given parameters are identical to
+ what was actually stored. Investigate.
+
+- Apparently we are not missing a PSRAQ instruction, because it
+ doesn't exist. Check that it doesn't exist as an undocumented
+ instruction, or something stupid like that. 0.99
+
+- Any assembled form starting 0x80 can also start 0x82. ndisasm 1.00
+ should know this. New special code in instruction encodings,
+ probably.
+
+- Pointing an EQU at an external symbol now generates an error. There 1.05
+ may be a better way of handling this; we should look into it.
+ Ideally, the label mechanism should be changed to cope with one
+ label being declared relative to another - that may work, but could be
+ a pain to implement (or is it? it may be easy enough that you just
+ need to declare a new offset in the same segment...) This should be done
+ before v1.0 is released. There is a comment regarding this in labels.c,
+ towards the end of the file, which discusses ways of fixing this.
+
+- nested %rep used to cause a panic. Now a more informative error 1.10
+ message is produced. This problem whould be fixed before v1.0.
+ See comment in switch() statement block for PP_REP in do_directive()
+ in preproc.c (line 1585, or thereabouts)
+
+- Contribution: zgraeme.tar contains improved hash table routines ?
+ contributed by Graeme Defty <graeme@HK.Super.NET> for use in the
+ label manager.
+
+- Contribution: zsyntax.zip contains a syntax-highlighting mode for ?
+ NASM, for use with the Aurora text editor (??).
+
+- Contribution: zvim.zip contains a syntax-highlighting mode for ?
+ NASM, for use with vim.
+
+- Contribution: zkendal1.zip and zkendal2.zip contain Kendall ?
+ Bennett's (<KendallB@scitechsoft.com>) alternative syntax stuff,
+ providing an alternative syntax mode for NASM which allows a macro
+ set to be written that allows the same source files to be
+ assembled with NASM and TASM.
+
+- Add the UD2 instruction. ?
+
+- Add the four instructions documented in 24368901.pdf (Intel's own ?
+ document).
+
+- Some means of avoiding MOV memoffs,EAX which apparently the 1.10?
+ Pentium pairing detector thinks modifies EAX. Similar means of
+ choosing instruction encodings where necessary.
+
+- The example of ..@ makes it clear that a ..@ label isn't just ?
+ local, but doesn't make it clear that it isn't just global either.
+
+- hpa wants an evaluator operator for ceil(log2(x)). ?
+
+- Extra reloc types in ELF: R_386_16 type 20, PC16 is 21, 8 is 22, PC8 is 23.
+ Add support for the 16s at least. ?
+
+
+- Lazy section creation or selective section output, in COFF/win32 ?
+ at least and probably other formats: don't bother to emit a section
+ if it contains no data. Particularly the default auto-created
+ section. We believe zero-length sections crash at least WLINK (in
+ win32).
+
+- Make the flags field in `struct itemplate' in insns.h a long ?
+ instead of an int.
+
+- Implement %ifref to check whether a single-line macro has ever been ?
+ expanded since (last re) definition. Or maybe not. We'll see.
+
+- add pointer to \k{insLEAVE} and \k{insENTER} in chapters about ?
+ mixed-language programming.
+
+- Some equivalent to TASM's GLOBAL directive, ie something which ?
+ defines a symbol as external if it doesn't end up being defined
+ but defines it as public if it does end up being defined.
+
+- Documentation doesn't explain about C++ name mangling. ?
+
+- see if BITS can be made to do anything sensible in obj (eg set the ?
default new-segment property to Use32).
-- __DATE__, __TIME__, and text variants of __NASM_MAJOR__ and
+- OBJ: coalesce consecutive offset and segment fixups for the same ?
+ location into full-32bit-pointer fixups. This is apparently
+ necessary because some twazzock in the PowerBASIC development
+ team didn't deign to support the OMF spec the way the rest of the
+ world sees it.
+
+- Allow % to be separated from the rest of a preproc directive, for ?
+ alternative directive indentation styles.
+
+- __DATE__, __TIME__, and text variants of __NASM_MAJOR__ and ?
__NASM_MINOR__.
-- Warn on TIMES combined with multi-line macros. TIMES gets applied
+- Warn on TIMES combined with multi-line macros. TIMES gets applied 1.00
to first line only - should bring to users' attention.
-- Add support for lcc 4.0.
- * If-when this happens, remember to bump the `supported lcc
- version' number in Readme.
-
-- Re-work the evaluator, again, with a per-object-format fixup
+- Re-work the evaluator, again, with a per-object-format fixup 1.10
routine, so as to be able to cope with section offsets "really"
being pure numbers; should be able to allow at _least_ the two
common idioms
@@ -28,17 +173,33 @@ NASM Wishlist
had to. (_Always_ returning UNKNOWN on pass one, though a lovely
clean design, breaks the first of the above examples.)
-- Preprocessor identifier concatenation?
+- Preprocessor identifier concatenation? 1.10
-- Arbitrary section names in `bin'.
+- Arbitrary section names in `bin'. ?
+ Is this necessary? Is it even desirable?
-- Ability to read from a pipe. Obviously not useful under dos, so
+- Ability to read from a pipe. Obviously not useful under dos, so 1.10
memory problems with storing entire input file aren't a problem
either.
-- Subsection support?
+ Related topic: file caching under DOS/32 bit... 1.10?
+ maybe even implement discardable buffers that get thrown away
+ when we get a NULL returned from malloc(). Only really useful under
+ DOS. Think about it.
+
+ Another related topic: possibly spool out the pre-processed 1.10?
+ stuff to a file, to avoid having to re-process it. Possible problems
+ with preprocessor values not known on pass 1? Have a look...
+
+ Or maybe we can spool out a pre-parsed version...? 1.10
+ Need to investigate feasibility. Does the results from the parser
+ change from pass 1 to pass 2? Would it be feasible to alter it so that
+ the parser returns an invariant result, and this is then processed
+ afterwards to resolve label references, etc?
-- A good ALIGN mechanism, similar to GAS's. GAS pads out space by
+- Subsection support? ?
+
+- A good ALIGN mechanism, similar to GAS's. GAS pads out space by 1.10?
means of the following (32-bit) instructions:
8DB42600000000 lea esi,[esi+0x0]
8DB600000000 lea esi,[esi+0x0]
@@ -55,7 +216,7 @@ NASM Wishlist
Also re-work the macro form so that when given one argument in a
code section it calls this feature.
-- Possibly a means whereby FP constants can be specified as
+- Possibly a means whereby FP constants can be specified as ?
immediate operands to non-FP instructions.
* Possible syntax: MOV EAX,FLOAT 1.2 to get a single-precision FP
constant. Then maybe MOV EAX,HI_FLOAT 1.2 and MOV EAX,LO_FLOAT
@@ -67,37 +228,41 @@ NASM Wishlist
chunks, one-byte chunks, even stranger chunks, and pieces of
ten-byte reals to be bandied around as well.
-- A UNION macro might be quite cool, now that ABSOLUTE is sane
+- A UNION macro might be quite cool, now that ABSOLUTE is sane ?
enough to be able to handle it.
-- An equivalent to gcc's ## stringify operator, plus string
+- An equivalent to gcc's ## stringify operator, plus string ?
concatenation, somehow implemented without undue ugliness, so as
to be able to do `%include "/my/path/%1"' in a macro, or something
similar...
-- Actually _do_ something with the processor, privileged and
- undocumented flags in the instruction table.
+- Actually _do_ something with the processor, privileged and 1.10
+ undocumented flags in the instruction table. When this happens,
+ consider allowing PMULHRW to map to either of the Cyrix or AMD
+ versions?
-- Maybe NEC V20/V30 instructions?
+- Maybe NEC V20/V30 instructions? ?
- Yet more object formats.
- * Possibly direct support for .EXE files?
-
-- Debug information, in all formats it can be usefully done in.
- * including line-number record support.
+ * Possibly direct support for .EXE files? 1.10
-- Symbol map in binary format. Format-specific options...
+- Symbol map in binary format. Format-specific options... 1.10?
-- REDESIGN: Think about EQU dependency, and about start-point
+- REDESIGN: Think about EQU dependency, and about start-point 1.20?
specification in OBJ. Possibly re-think directive support.
-- Think about a wrapper program like gcc? Possibly invent a _patch_
+- Think about a wrapper program like gcc? Possibly invent a _patch_ 2.00?
for gcc so that it can take .asm files on the command line?
-- If a wrapper happens, think about adding an option to cause the
+- If a wrapper happens, think about adding an option to cause the ?
resulting executable file to be executed immediately, thus
allowing NASM source files to have #!... (probably silly)
-- Multi-platform support? If so: definitely Alpha; possibly Java
+- Multi-platform support? If so: definitely Alpha; possibly Java ?
byte code; probably ARM/StrongARM; maybe Sparc; maybe Mips; maybe
Vax. Perhaps Z80 and 6502, just for a laugh?
+
+- Consider a 'verbose' option that prints information about the resulting ?
+ object file onto stdout.
+
+