From 2e9a6e870fe19a7a78e5fd9e3c60468697f13598 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Wed, 26 Dec 2018 06:12:13 -0800 Subject: TODO: delete completely obsolete file --- TODO | 376 ------------------------------------------------------------------- 1 file changed, 376 deletions(-) delete mode 100644 TODO diff --git a/TODO b/TODO deleted file mode 100644 index 29a1b05e..00000000 --- a/TODO +++ /dev/null @@ -1,376 +0,0 @@ -NASM TODO list -============== - -This, like the AUTHORS file, is intended for easy readability by both human -and machine, thus the format. - - F: feature - V: version you should expect it by - R: responsible person or - if unassigned - C: % complete - D: description - D: maybe on multiple lines - -Anything that doesn't start with /^[FVRCD]:/ should be ignored. - - F:-line triggers new entry. - Empty V,R,C assume: V: ?, R: -, C: 0% - -============= - -F: Extended x64 Support -D: Full FPU/MMX/SSE* instruction support for x64 - -F: ELF64 output format -D: Support for assembling code to the ELF64 output format - -F: NDISASM x64 Support -D: Ability to disassemble respective x64 code - -F: General x64 Support -V: 0.99.00 -R: Keith Kanios -C: 99% -D: Support for assembling 64-bit code to various output formats - -F: win64 (x86-64 COFF) output format -V: 0.99.00 -R: Keith Kanios -C: 99% -D: Support for assembling code to the win64 output format - -F: c99 data-type compliance -V: 0.99.00 -R: Keith Kanios -C: 99% -D: Revamped entire source-code base data-types for compliance -D: with c99 (inttypes.h) - -F: __BITS__ Standard Macro -V: 0.99.00 -R: Keith Kanios -C: 100% -D: __BITS__ standard macro that returns current [BITS XX] mode - -F: i18n via gettext -D: kkanios: be careful about that, stick to UTF-8 if anything - -F: Convert shallow code model to deep code model -D: Tired of messing between lots of unrelated files (especially .c/.h stuff) - -F: Automated dependency generation for Makefile -D: Current looks awful and will break if anything changes. - -F: Move output modules out*.c to output/ subdir -R: madfire -C: 100% - -== THESE ARE FROM old NASM's Wishlist -== THEY NEED SEVERE REVISING (seems they weren't updated for a couple of years or so) - -F: Check misc/ide.cfg into RCS as Watcom IDE enhancement thingy -V: 0.98 -D: (nop@dlc.fi) - -F: Package the Linux Assembler HOWTO -V: 0.98 - -F: 3DNow!, SSE and other extensions need documenting -V: 0.98 -D: hpa: Does it really make sense to have a whole instruction set -D: reference packaged with the assembler? -D: kkanios: Yes, for me it was a great help... and still is. - -F: prototypes of lrotate don't match in test/*. Fix. -V: 0.98 - -F: Build djgpp binaries for 0.98 onwards. Look into PMODE/W as a stub -V: 0.98 -D: it might be a lot better than CWSDPMI. It's in PMW133.ZIP. - -F: %undef operator that goes along with %define -V: ? -C: 100% - -F: Fix `%error' giving error messages twice. -V: 0.99 -D: Not especially important, as changes planned for 1.1x below will make -D: the preprocessor be only called once. - -F: Sort out problems with OBJ -V: 0.99 -D: * TLINK32 doesn't seem to like SEGDEF32 et al. So for that, we -D: should avoid xxx32 records wherever we can. -D: * However, didn't we change _to_ using xxx32 at some stage? Try -D: to remember why and when. -D: * Apparently Delphi's linker has trouble with two or more -D: globals being defined inside a PUBDEF32. Don't even know if it -D: _can_ cope with a PUBDEF16. -D: * Might need extra flags. *sigh* - -F: Symbol table output may possibly be useful. -V: 0.99 -D: Ken Martwick (kenm@efn.org) wants the following format: -D: labelname type offset(hex) repetition count -D: Possibly include xref addresses after repetition count? - -F: ELF fixes -V: 0.99 -D: There are various other bugs in outelf.c that make certain kinds -D: of relocation not work. See zbrown.asm. Looks like we may have to do -D: a major rewrite of parts of it. Compare some NASM code output with -D: equivalent GAS code output. Look at the ELF spec. Generally fix things. - -F: ELF fixes -V: 0.99 -D: NASM is currently using a kludge in ELF that involves defining -D: a symbol at a zero absolute offset. This isn't needed, as the -D: documented solution to the problem that this solves is to use -D: SHN_UNDEF. - -F: Debug information, in all formats it can be usefully done in. -V: 0.99 -D: * including line-number record support. -D: * "George C. Lindauer" -D: wants to have some say in how this goes through. -D: * Andrew Crabtree wants to help out. - -F: Think about a line-continuation character. -V: 0.99 - -F: Consider allowing declaration of two labels on the same line, -V: 0.99 -D: syntax 'label1[:] label2[:] ... instruction'. -D: Need to investigate feasibility. - -F: Quoting of quotes by doubling them, in string and char constants. -V: 0.99 - -F: Two-operand syntax for SEGMENT/SECTION macro to avoid warnings -D: of ignored section parameters on reissue of __SECT__. -D: Or maybe skip the warning if the given parameters are identical to -D: what was actually stored. Investigate. -V: 0.99 - -F: Apparently we are not missing a PSRAQ instruction, because it -D: doesn't exist. Check that it doesn't exist as an undocumented -D: instruction, or something stupid like that. -V: 0.99 - -F: Any assembled form starting 0x80 can also start 0x82. -V: 1.00 -D: ndisasm should know this. New special code in instruction encodings, probably. - -F: Pointing an EQU at an external symbol now generates an error. -V: 1.05 -D: There may be a better way of handling this; we should look into it. -D: Ideally, the label mechanism should be changed to cope with one -D: label being declared relative to another - that may work, but could be -D: a pain to implement (or is it? it may be easy enough that you just -D: need to declare a new offset in the same segment...) This should be done -D: before v1.0 is released. There is a comment regarding this in labels.c, -D: towards the end of the file, which discusses ways of fixing this. - -F: nested %rep used to cause a panic. -V: 1.10 -D: Now a more informative error message is produced. This problem whould -D: be fixed before v1.0. -D: See comment in switch() statement block for PP_REP in do_directive() -D: in preproc.c (line 1585, or thereabouts) - -F: Contribution -D: zgraeme.tar contains improved hash table routines -D: contributed by Graeme Defty for use in the -D: label manager. - -F: Contribution -D: zsyntax.zip contains a syntax-highlighting mode for -D: NASM, for use with the Aurora text editor (??). - -F: Contribution -D: zvim.zip contains a syntax-highlighting mode for NASM, for use with vim. - -F: Contribution -D: zkendal1.zip and zkendal2.zip contain Kendall -D: Bennett's () alternative syntax stuff, -D: providing an alternative syntax mode for NASM which allows a macro -D: set to be written that allows the same source files to be -D: assembled with NASM and TASM. -R: Kendall Bennett -C: 100% - -F: Add the UD2 instruction. -C: 100% - -F: Add the four instructions documented in 24368901.pdf (Intel's own document). -C: 100% - -F: Some means of avoiding MOV memoffs,EAX which apparently the -D: Pentium pairing detector thinks modifies EAX. Similar means of -D: choosing instruction encodings where necessary. -V: 1.10? - -F: The example of ..@ makes it clear that a ..@ label isn't just -D: local, but doesn't make it clear that it isn't just global either. - -F: hpa wants an evaluator operator for ceil(log2(x)). - -F: Extra reloc types in ELF -D: R_386_16 type 20, PC16 is 21, 8 is 22, PC8 is 23. -D: Add support for the 16s at least. - -F: Lazy section creation or selective section output -D: in COFF/win32 at least and probably other formats: don't bother to emit a section -D: if it contains no data. Particularly the default auto-created -D: section. We believe zero-length sections crash at least WLINK (in win32). - -F: Make the flags field in `struct itemplate' in insns.h a long instead of an int. -C: 100%? - -F: Implement %ifref to check whether a single-line macro has ever been expanded since (last re) definition. Or maybe not. We'll see. - -F: add pointer to \k{insLEAVE} and \k{insENTER} in chapters about mixed-language programming. - -F: Some equivalent to TASM's GLOBAL directive -D: ie something which defines a symbol as external if it doesn't end up being defined -D: but defines it as public if it does end up being defined. - -F: Documentation doesn't explain about C++ name mangling. - -F: see if BITS can be made to do anything sensible in obj (eg set the default new-segment property to Use32). - -F: OBJ: coalesce consecutive offset and segment fixups for the same location into full-32bit-pointer fixups. -D: This is apparently necessary because some twazzock in the PowerBASIC development -D: team didn't design to support the OMF spec the way the rest of the -D: world sees it. - -F: Allow % to be separated from the rest of a preproc directive, for alternative directive indentation styles. - -F: __DATE__, __TIME__, and text variants of __NASM_MAJOR__ and __NASM_MINOR__. - -F: Warn on TIMES combined with multi-line macros. -V: 1.00 -D: TIMES gets applied to first line only - should bring to users' attention. - -F: Re-work the evaluator, again, with a per-object-format fixup -D: routine, so as to be able to cope with section offsets "really" -D: being pure numbers; should be able to allow at _least_ the two -D: common idioms -D: TIMES 510-$ DB 0 ; bootsector -D: MOV AX,(PROG_END-100H)/16 ; .COM TSR -D: Would need to call the fixup throughout the evaluator, and the -D: fixup would have to be allowed to return UNKNOWN on pass one if it -D: had to. (_Always_ returning UNKNOWN on pass one, though a lovely -D: clean design, breaks the first of the above examples.) -V: 1.10 - -F: Preprocessor identifier concatenation? -V: 1.10 - -F: Arbitrary section names in `bin'. -V: 0.98.09 -D: Is this necessary? Is it even desirable? -D: hpa: Desirable, yes. Necessary? Probably not, but there are definitely cases where it becomes quite useful. -R: madfire -C: 100% - -F: Ability to read from a pipe. -V: 1.10 -D: Obviously not useful under dos, so memory problems with storing -D: entire input file aren't a problem either. - -F: File caching under DOS/32 bit... -V: 1.10? -D: maybe even implement discardable buffers that get thrown away -D: when we get a NULL returned from malloc(). Only really useful under -D: DOS. Think about it. - -F: possibly spool out the pre-processed stuff to a file, to avoid having to re-process it. -V: 1.10? -D: Possible problems with preprocessor values not known on pass 1? Have a look... - -F: Or maybe we can spool out a pre-parsed version...? -V: 1.10 -D: Need to investigate feasibility. Does the results from the parser -D: change from pass 1 to pass 2? Would it be feasible to alter it so that -D: the parser returns an invariant result, and this is then processed -D: afterwards to resolve label references, etc? - -F: Subsection support? - -F: A good ALIGN mechanism, similar to GAS's. -V: 0.98p1 -D: GAS pads out space by means of the following (32-bit) instructions: -D: 8DB42600000000 lea esi,[esi+0x0] -D: 8DB600000000 lea esi,[esi+0x0] -D: 8D742600 lea esi,[esi+0x0] -D: 8D7600 lea esi,[esi+0x0] -D: 8D36 lea esi,[esi] -D: 90 nop -D: It uses up to two of these instructions to do up to 14-byte pads; -D: when more than 14 bytes are needed, it issues a (short) jump to -D: the end of the padded section and then NOPs the rest. Come up with -D: a similar scheme for 16 bit mode, and also come up with a way to -D: use it - internal to the assembler, so that programs using ALIGN -D: don't knock over preprocess-only mode. -D: Also re-work the macro form so that when given one argument in a -D: code section it calls this feature. -R: Panos Minos -C: 100%? - -F: Possibly a means whereby FP constants can be specified as immediate operands to non-FP instructions. -D: * Possible syntax: MOV EAX,FLOAT 1.2 to get a single-precision FP -D: constant. Then maybe MOV EAX,HI_FLOAT 1.2 and MOV EAX,LO_FLOAT -D: 1.2 to get the two halves of a double-precision one. Best to -D: ignore extended-precision in case it bites. -D: * Alternatively, maybe MOV EAX,FLOAT(4,0-4,1.2) to get bytes 0-4 -D: (ie 0-3) of a 4-byte constant. Then HI_FLOAT is FLOAT(8,4-8,x) -D: and LO_FLOAT is FLOAT(8,0-4,x). But this version allows two-byte -D: chunks, one-byte chunks, even stranger chunks, and pieces of -D: ten-byte reals to be bandied around as well. - -F: A UNION macro might be quite cool -D: now that ABSOLUTE is sane enough to be able to handle it. - -F: An equivalent to gcc's ## stringify operator, plus string concatenation -D: somehow implemented without undue ugliness, so as -D: to be able to do `%include "/my/path/%1"' in a macro, or something -D: similar... - -F: Actually _do_ something with the processor, privileged and -D: undocumented flags in the instruction table. When this happens, -D: consider allowing PMULHRW to map to either of the Cyrix or AMD -D: versions? -D: hpa: The -p option to ndisasm now uses this to some extent. -V: 1.10 - -F: Maybe NEC V20/V30 instructions? ? -D: hpa: What are they? Should be trivial to implement. - -F: Yet more object formats. -D: * Possibly direct support for .EXE files? -V: 1.10 - -F: Symbol map in binary format. Format-specific options... -V: 1.10? - -F: REDESIGN: Think about EQU dependency, and about start-point specification in OBJ. Possibly re-think directive support. -V: 1.20? - -F: Think about a wrapper program like gcc? -V: 2.00? -D: Possibly invent a _patch_ for gcc so that it can take .asm files on the command line? -D: If a wrapper happens, think about adding an option to cause the -D: resulting executable file to be executed immediately, thus -D: allowing NASM source files to have #!... (probably silly) - -F: Multi-platform support? -D: If so: definitely Alpha; possibly Java byte code; -D: probably ARM/StrongARM; maybe Sparc; maybe Mips; maybe -D: Vax. Perhaps Z80 and 6502, just for a laugh? - -F: Consider a 'verbose' option that prints information about the resulting object file onto stdout. - -F: Line numbers in the .lst file don't match the line numbers in the input. -D: They probably should, rather than the current matching of the post-preprocessor line numbers. - -- cgit v1.2.1