home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / nasm097.zip / WISHLIST < prev   
Text File  |  1997-11-24  |  4KB  |  104 lines

  1. NASM Wishlist
  2. =============
  3.  
  4. - forward-reference tracking is instruction-granular not operand-
  5.   granular. Bummer.
  6.  
  7. - see if BITS can be made to do anything sensible in obj (eg set the
  8.   default new-segment property to Use32).
  9.  
  10. - __DATE__, __TIME__, and text variants of __NASM_MAJOR__ and
  11.   __NASM_MINOR__.
  12.  
  13. - Warn on TIMES combined with multi-line macros. TIMES gets applied
  14.   to first line only - should bring to users' attention.
  15.  
  16. - Add support for lcc 4.0.
  17.   * If-when this happens, remember to bump the `supported lcc
  18.     version' number in Readme.
  19.  
  20. - Re-work the evaluator, again, with a per-object-format fixup
  21.   routine, so as to be able to cope with section offsets "really"
  22.   being pure numbers; should be able to allow at _least_ the two
  23.   common idioms
  24.      TIMES 510-$ DB 0            ; bootsector
  25.      MOV AX,(PROG_END-100H)/16   ; .COM TSR
  26.   Would need to call the fixup throughout the evaluator, and the
  27.   fixup would have to be allowed to return UNKNOWN on pass one if it
  28.   had to. (_Always_ returning UNKNOWN on pass one, though a lovely
  29.   clean design, breaks the first of the above examples.)
  30.  
  31. - Preprocessor identifier concatenation?
  32.  
  33. - Arbitrary section names in `bin'.
  34.  
  35. - Ability to read from a pipe. Obviously not useful under dos, so
  36.   memory problems with storing entire input file aren't a problem
  37.   either.
  38.  
  39. - Subsection support?
  40.  
  41. - A good ALIGN mechanism, similar to GAS's. GAS pads out space by
  42.   means of the following (32-bit) instructions:
  43.           8DB42600000000    lea esi,[esi+0x0]
  44.           8DB600000000      lea esi,[esi+0x0]
  45.           8D742600          lea esi,[esi+0x0]
  46.           8D7600            lea esi,[esi+0x0]
  47.           8D36              lea esi,[esi]
  48.           90                nop
  49.   It uses up to two of these instructions to do up to 14-byte pads;
  50.   when more than 14 bytes are needed, it issues a (short) jump to
  51.   the end of the padded section and then NOPs the rest. Come up with
  52.   a similar scheme for 16 bit mode, and also come up with a way to
  53.   use it - internal to the assembler, so that programs using ALIGN
  54.   don't knock over preprocess-only mode.
  55.     Also re-work the macro form so that when given one argument in a
  56.   code section it calls this feature.
  57.  
  58. - Possibly a means whereby FP constants can be specified as
  59.   immediate operands to non-FP instructions.
  60.   * Possible syntax: MOV EAX,FLOAT 1.2 to get a single-precision FP
  61.     constant. Then maybe MOV EAX,HI_FLOAT 1.2 and MOV EAX,LO_FLOAT
  62.     1.2 to get the two halves of a double-precision one. Best to
  63.     ignore extended-precision in case it bites.
  64.   * Alternatively, maybe MOV EAX,FLOAT(4,0-4,1.2) to get bytes 0-4
  65.     (ie 0-3) of a 4-byte constant. Then HI_FLOAT is FLOAT(8,4-8,x)
  66.     and LO_FLOAT is FLOAT(8,0-4,x). But this version allows two-byte
  67.     chunks, one-byte chunks, even stranger chunks, and pieces of
  68.     ten-byte reals to be bandied around as well.
  69.  
  70. - A UNION macro might be quite cool, now that ABSOLUTE is sane
  71.   enough to be able to handle it.
  72.  
  73. - An equivalent to gcc's ## stringify operator, plus string
  74.   concatenation, somehow implemented without undue ugliness, so as
  75.   to be able to do `%include "/my/path/%1"' in a macro, or something
  76.   similar...
  77.  
  78. - Actually _do_ something with the processor, privileged and
  79.   undocumented flags in the instruction table.
  80.  
  81. - Maybe NEC V20/V30 instructions?
  82.  
  83. - Yet more object formats.
  84.   * Possibly direct support for .EXE files?
  85.  
  86. - Debug information, in all formats it can be usefully done in.
  87.   * including line-number record support.
  88.  
  89. - Symbol map in binary format. Format-specific options...
  90.  
  91. - REDESIGN: Think about EQU dependency, and about start-point
  92.   specification in OBJ. Possibly re-think directive support.
  93.  
  94. - Think about a wrapper program like gcc? Possibly invent a _patch_
  95.   for gcc so that it can take .asm files on the command line?
  96.  
  97. - If a wrapper happens, think about adding an option to cause the
  98.   resulting executable file to be executed immediately, thus
  99.   allowing NASM source files to have #!... (probably silly)
  100.  
  101. - Multi-platform support? If so: definitely Alpha; possibly Java
  102.   byte code; probably ARM/StrongARM; maybe Sparc; maybe Mips; maybe
  103.   Vax. Perhaps Z80 and 6502, just for a laugh?
  104.