Brad Gilbert [Sat, 2 May 2009 23:26:25 +0000 (2 18:26 -0500)]
Reworked test files for better error reporting
Brad Gilbert [Sat, 2 May 2009 22:31:28 +0000 (2 17:31 -0500)]
Merge branch 'master' of git://repo.or.cz/nasm
H. Peter Anvin [Thu, 30 Apr 2009 15:03:10 +0000 (30 08:03 -0700)]
outbin: replace fprintf(rf, not_defined); with fputs(not_defined, rf);
Some vendors get nervous about parameterized printf patterns;
furthermore, it's completely unnecessary in this case.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Mon, 20 Apr 2009 21:04:17 +0000 (20 14:04 -0700)]
NASM 2.06rc11
H. Peter Anvin [Mon, 20 Apr 2009 21:01:18 +0000 (20 14:01 -0700)]
preproc: unify token-pasting code
Unify the token-pasting code between the macro expansion and the
preprocessor parameter case. Parameterize whether or not to handle %+
tokens during expansion (%+ tokens have late binding semantics.)
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
H. Peter Anvin [Mon, 20 Apr 2009 00:24:54 +0000 (19 17:24 -0700)]
doc: slightly tidy the copyright page of the manual.
Brad Gilbert [Sun, 19 Apr 2009 19:33:41 +0000 (19 14:33 -0500)]
moved old version.pl to perl/old/
replaced old version.pl with the rewritten version
modified old regs.pl, for compatibility with the tests for the new regs.pl
Brad Gilbert [Sun, 19 Apr 2009 19:23:33 +0000 (19 14:23 -0500)]
Improved POD documentation of perl modules
Brad Gilbert [Sun, 19 Apr 2009 18:20:05 +0000 (19 13:20 -0500)]
Merge branch 'master' of git://repo.or.cz/nasm
Brad Gilbert [Sun, 19 Apr 2009 03:41:05 +0000 (18 22:41 -0500)]
Added POD tests and a Perl::Critic test
Also worked on removing failures of those tests
Brad Gilbert [Sat, 18 Apr 2009 15:58:19 +0000 (18 10:58 -0500)]
Added pod test, and made the other tests more alike
H. Peter Anvin [Fri, 17 Apr 2009 21:20:44 +0000 (17 14:20 -0700)]
preproc: make $ and $$ TOKEN_OTHER
Recognize $ and $$ as TOKEN_OTHER; they aren't really either
TOK_NUMBER nor TOK_ID, even though we have traditionally considered
them TOK_NUMBER.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Victor van den Elzen [Fri, 17 Apr 2009 14:17:59 +0000 (17 16:17 +0200)]
BR
2760773: $$ tokens
The tokenizer didn't handle $$, but relied on token pasting of two $ tokens.
This broke after the improvements in
9bb46df4.
Brad Gilbert [Thu, 16 Apr 2009 22:53:30 +0000 (16 17:53 -0500)]
Added perldoc information to version.pl
Added tests for version.pl output formats json yaml
Brad Gilbert [Thu, 16 Apr 2009 03:50:49 +0000 (15 22:50 -0500)]
Added phash.pl
Modified phash.pm so that gen_perfect_hash calls verify_hash_table, before returning
Brad Gilbert [Wed, 15 Apr 2009 20:18:23 +0000 (15 15:18 -0500)]
Rewritten pptok.pl, now works
moved around copies of original Perl files
Brad Gilbert [Tue, 14 Apr 2009 17:33:14 +0000 (14 12:33 -0500)]
Added info to insns.dat
other minor cleanups
Brad Gilbert [Sun, 12 Apr 2009 22:05:57 +0000 (12 17:05 -0500)]
Minor fix
Brad Gilbert [Sun, 12 Apr 2009 19:52:51 +0000 (12 14:52 -0500)]
Added New regs.pl, and associated modules
Brad Gilbert [Sat, 11 Apr 2009 22:43:31 +0000 (11 17:43 -0500)]
Merge branch 'master' of git://repo.or.cz/nasm
Brad Gilbert [Thu, 9 Apr 2009 23:28:48 +0000 (9 18:28 -0500)]
Minor cleanup of test files for version.pl
reworked version.pl
moved crc64.pm
Brad Gilbert [Thu, 9 Apr 2009 19:28:08 +0000 (9 14:28 -0500)]
Moved t/version* to t/version/*
Brad Gilbert [Thu, 9 Apr 2009 04:28:36 +0000 (8 23:28 -0500)]
removed extraneous file nasm.kpf
Brad Gilbert [Thu, 9 Apr 2009 04:25:20 +0000 (8 23:25 -0500)]
Removed dead code left over from previous refactor of the version.pl test files
H. Peter Anvin [Wed, 8 Apr 2009 21:02:25 +0000 (8 14:02 -0700)]
preproc: fix more token pasting cases
"+" can be a separate token that ends up having to get pulled into the
middle of a floating-point constant. It's not even that strange.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Wed, 8 Apr 2009 20:49:48 +0000 (8 13:49 -0700)]
AUTHORS: Update information for HPA
Brad Gilbert [Wed, 8 Apr 2009 18:24:16 +0000 (8 13:24 -0500)]
Refactored version.pl test suite.
Added crc64.pm
Brad Gilbert [Wed, 8 Apr 2009 15:47:38 +0000 (8 10:47 -0500)]
Merge branch 'master' of git://repo.or.cz/nasm
H. Peter Anvin [Wed, 8 Apr 2009 05:10:35 +0000 (7 22:10 -0700)]
NASM 2.06rc10
H. Peter Anvin [Wed, 8 Apr 2009 05:09:05 +0000 (7 22:09 -0700)]
Document preprocessor token concatenation fix.
H. Peter Anvin [Wed, 8 Apr 2009 04:59:24 +0000 (7 21:59 -0700)]
Handle weird cases of token pasting
Especially when token pasting involves floating-point numbers, we can
have some really strange effects from token pasting: for example,
pasting the two tokens "xyzzy" and "1e+10" ends up with *three*
tokens: "xyzzy1e" "+" "10". The easiest way to deal with this is to
explicitly combine the string and then run tokenize() on it.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Wed, 8 Apr 2009 03:59:41 +0000 (7 20:59 -0700)]
NASM 2.06rc9
H. Peter Anvin [Tue, 7 Apr 2009 02:37:30 +0000 (6 19:37 -0700)]
nasm.nsi: add COPYING to the list of files to package
H. Peter Anvin [Tue, 7 Apr 2009 02:12:34 +0000 (6 19:12 -0700)]
nasm.nsi: add NASM Manual; automate version generation
Add the NASM Manual (as a PDF) to the Windows installer, and abstract
out the version number.
Shao Miller [Tue, 7 Apr 2009 02:07:37 +0000 (6 19:07 -0700)]
Add NSIS script to make a Windows installer
Here is an NSIS script for making a simple NASM package. It creates a
NASM folder with some of the important binaries in it, as well as a
simple batch file to get a CLI with the NASM folder included in the
PATH. Expects to be built from inside the bin/ directory. Fairly
primitive. Feedback welcome. - Shao
Brad Gilbert [Sun, 5 Apr 2009 19:16:49 +0000 (5 14:16 -0500)]
Rewrote version.pl, and added some tests
Brad Gilbert [Sun, 5 Apr 2009 14:00:20 +0000 (5 09:00 -0500)]
modified: perl/t/version.t
modified: perl/version.pl
modified: version.pl
Brad Gilbert [Sat, 4 Apr 2009 04:46:13 +0000 (3 23:46 -0500)]
modified: t/version.t
modified: version.pl
modified: ../version.pl
Victor van den Elzen [Sun, 29 Mar 2009 01:09:13 +0000 (29 03:09 +0200)]
Add STRUC change to changes.src
Victor van den Elzen [Fri, 27 Mar 2009 02:53:59 +0000 (27 03:53 +0100)]
FR
2499968: structures with non-zero base offset
Add an optional second argument to struc, document it and test it.
Also removed trailing whitespace in nasmdoc.src in the process.
H. Peter Anvin [Thu, 19 Mar 2009 13:52:07 +0000 (19 06:52 -0700)]
disasm: fix reversed REP vs REPNE in eatbyte()
F2 is REPNE, F3 is REP(E)
H. Peter Anvin [Thu, 19 Mar 2009 06:10:19 +0000 (18 23:10 -0700)]
disasm: when no instruction is found, consider a naked prefix
If we can't find a matching instruction, rather than printing it as a
"db" literal, consider first if we can disassemble it as a naked prefix.
H. Peter Anvin [Wed, 18 Mar 2009 23:21:45 +0000 (18 16:21 -0700)]
NASM 2.06rc8
Andy Polyakov [Wed, 18 Mar 2009 21:49:23 +0000 (18 14:49 -0700)]
outcoff: BR
2685756: fix SAFESEH with an internal symbol
Fix the SAFESEH directive for the specific case of a symbol internal
to the program. With the optimizer enabled, it would otherwise fail
unless the symbol is external.
Michael Scherer [Wed, 18 Mar 2009 21:26:29 +0000 (18 22:26 +0100)]
outelf32/64: fix uninitialized rbtree
Fix crash caused by uninitialised memory that lead to dangling pointer
in the rbtree. This can be seen by compiling zsnes 1.50, with a file
that define many symbols, such as fxemu2c.asm.
H. Peter Anvin [Wed, 18 Mar 2009 01:26:47 +0000 (17 18:26 -0700)]
BR
2690688: Fix opcodes for FMA instructions
Two bugs with respect to the FMA instructions:
- the variant increment is supposed to be 0x10, not 0x01.
- the base opcode for scalar VFNMADD is 0x9d, not 0x9c
H. Peter Anvin [Tue, 17 Mar 2009 23:18:41 +0000 (17 16:18 -0700)]
Add test from BR
2690688
Add the test case from BR
2690688 to the test collection.
H. Peter Anvin [Tue, 17 Mar 2009 23:13:10 +0000 (17 16:13 -0700)]
BR
2690688: add missing VFM instructions
The Perl script which auto-generated the VFM instructions had
incorrectly conflated the VEX.W and VEX.L bits, with the result that
only half the valid instructions were generated.
H. Peter Anvin [Mon, 16 Mar 2009 23:32:42 +0000 (16 16:32 -0700)]
BR
2689316: PEXTRQ requires REX.W
The PEXTRQ instruction requires a REX.W prefix.
H. Peter Anvin [Mon, 16 Mar 2009 18:51:07 +0000 (16 11:51 -0700)]
genfma: fix spelling of the VFNM instructions
Fix the spelling of the scalar VFNM instruction in genfma.pl, too,
just in case we need to pull this script out again...
H. Peter Anvin [Mon, 16 Mar 2009 18:49:27 +0000 (16 11:49 -0700)]
insns.dat: fix VFNM instructions incorrectly spelled as VFMN
The scalar versions of the VFNM instructions had been incorrectly
spelled VFMN.
H. Peter Anvin [Sun, 15 Mar 2009 21:38:54 +0000 (15 14:38 -0700)]
NASM 2.06rc7
H. Peter Anvin [Sun, 8 Mar 2009 05:54:31 +0000 (7 21:54 -0800)]
BR
2672117: handle long lines for db/dw/etc.
Handle long arrays on a single line in db/dw/etc.
H. Peter Anvin [Sun, 1 Mar 2009 21:57:40 +0000 (1 13:57 -0800)]
autoconf: detect the broken bool in OpenWatcom 1.8
OpenWatcom 1.8 has a C99 mode, which implements _Bool and
<stdbool.h>. Unfortunately the implementation is broken, and doesn't
let _Bool be implicitly converted to integer (as required by the C99
spec). Detect this case in autoconf.
H. Peter Anvin [Sun, 1 Mar 2009 08:22:16 +0000 (1 00:22 -0800)]
Most instruction codes are octal, so print errors that way too
Most of our instruction opcodes are written in octal. Thus, it makes
sense to print them that way if we ever have an error message.
H. Peter Anvin [Fri, 27 Feb 2009 00:37:55 +0000 (26 16:37 -0800)]
optimization.asm: more sbyte tests
A few more sbyte optimization tests.
H. Peter Anvin [Fri, 27 Feb 2009 00:34:56 +0000 (26 16:34 -0800)]
sbyte: optimization is OK if UNKNOWN isn't set
We can optimize the sbytes if the UNKNOWN flag isn't set
H. Peter Anvin [Fri, 27 Feb 2009 00:34:07 +0000 (26 16:34 -0800)]
optimization.asm: add sbyte tests
H. Peter Anvin [Thu, 26 Feb 2009 22:58:06 +0000 (26 14:58 -0800)]
NASM 2.06rc6
H. Peter Anvin [Thu, 26 Feb 2009 22:48:03 +0000 (26 14:48 -0800)]
BR
2413265: don't pessimize displacements
Optimize displacements, don't pessimize them. When running in the
optimizer, we always keep track of when a reference is forward. That
doesn't mean it is unknown.
H. Peter Anvin [Thu, 26 Feb 2009 22:47:17 +0000 (26 14:47 -0800)]
optimization.asm: add EA optimization tests
Add tests for EA optimizations
H. Peter Anvin [Thu, 26 Feb 2009 22:36:19 +0000 (26 14:36 -0800)]
nasm.c: another readability cleanup
Yet another change for readability
H. Peter Anvin [Thu, 26 Feb 2009 22:34:48 +0000 (26 14:34 -0800)]
nasm.c: readability cleanup for seg:off parsing
The code to pick apart seg:off in nasm.c was virtually unreadable due
to mechanized line breaking.
Victor van den Elzen [Wed, 25 Feb 2009 16:49:23 +0000 (25 17:49 +0100)]
Rename convergence.asm to optimization.asm
Victor van den Elzen [Wed, 25 Feb 2009 16:32:00 +0000 (25 17:32 +0100)]
Do not confuse segmentless adresses and unknown forward references
Also be optimistic with immediate forward references.
H. Peter Anvin [Tue, 24 Feb 2009 02:27:29 +0000 (23 18:27 -0800)]
Add VPCLMUL instructions
H. Peter Anvin [Tue, 24 Feb 2009 01:51:25 +0000 (23 17:51 -0800)]
assemble: only be optimistic with NO_SEG if we're really in pass 1
Only be optimistic about the reachability of a symbol with NO_SEG if
we are truly in pass 1, i.e. it could possibly be just a forward
reference. After we have done a single pass, if it is still NO_SEG,
then it is an absolute symbol and need to be treated as such.
H. Peter Anvin [Tue, 24 Feb 2009 01:47:25 +0000 (23 17:47 -0800)]
convergence.asm: add test of jmp to an absolute address
A JMP to an absolute address can't be short. Thus, we must not try to
make it so.
Victor van den Elzen [Mon, 23 Feb 2009 04:16:35 +0000 (23 05:16 +0100)]
Add test file for optimal convergence
Some edge cases where starting with a long form
converges suboptimally.
Victor van den Elzen [Mon, 23 Feb 2009 03:35:00 +0000 (23 04:35 +0100)]
BR
2420167: jmp not always optimized
Begin by assuming short jumps are possible to prevent suboptimal convergence.
H. Peter Anvin [Sun, 22 Feb 2009 04:45:42 +0000 (21 20:45 -0800)]
PCLMUL is apparently targeted for Westmere with the AES stuff
The PCLMUL instruction is apparently targetted for Westmere.
H. Peter Anvin [Sun, 22 Feb 2009 03:02:58 +0000 (21 19:02 -0800)]
NASM 2.06rc5
H. Peter Anvin [Sun, 22 Feb 2009 02:58:15 +0000 (21 18:58 -0800)]
BR
2557903: fix disassembly of a set of SSE MOV* instructions
Fix the disassembly of the alternate forms of register-register
MOVAPD, MOVDQA, MOVDQU, MOVQ, MOVSD, and MOVUPD.
NASM never generates these, but they would be disassembled
incorrectly.
H. Peter Anvin [Sun, 22 Feb 2009 02:51:17 +0000 (21 18:51 -0800)]
BR
2541252: Fix issues in insns.dat, mostly related to LZCNT and POPCNT
Fix various flags on LZCNT and POPCNT, and fix a few instructions
tagged \360\332, which makes no sense.
H. Peter Anvin [Sun, 22 Feb 2009 02:26:20 +0000 (21 18:26 -0800)]
changes.src: document WAIT and %$$ fixes
H. Peter Anvin [Sun, 22 Feb 2009 02:22:56 +0000 (21 18:22 -0800)]
BR
2592476: Treat WAIT as a prefix even though it's really an instruction
WAIT is technically an instruction, but from an assembler standpoint
it behaves as if it had been a prefix. In particular, it has to be
ordered *before* any real hardware prefixes.
H. Peter Anvin [Sun, 22 Feb 2009 01:55:08 +0000 (21 17:55 -0800)]
br704736: handle deep context-local macros
The documentation says that constructs with %$...$foo can be used
to access macros from deeper in the context stack. From what
I can tell, that has never actually worked, since we'd enter names
like %$foo into the context-local macro name table. Instead, only
insert the tail of the macro name into the context-local table;
expand get_ctx to also return a pointer to the macro name proper;
this is rather straightforward since we'd usually save away that
name at the point get_ctx is called anyway.
H. Peter Anvin [Sun, 22 Feb 2009 01:54:31 +0000 (21 17:54 -0800)]
nasmlib: make nasm_strcat() take const arguments
None of the strings passed to nasm_strcat() are modified, to
make them const.
H. Peter Anvin [Sun, 22 Feb 2009 01:27:51 +0000 (21 17:27 -0800)]
outelf32/64: remove align_str in favor of fwritezero()
Drop the use of yet another local all-zero buffer, align_str, in favor
of calling fwritezero().
H. Peter Anvin [Sun, 22 Feb 2009 01:27:13 +0000 (21 17:27 -0800)]
outbin: fix typo: "sections" not "section"
Fix silly typo: the variable is "sections" not "section"...
H. Peter Anvin [Mon, 9 Feb 2009 10:03:33 +0000 (9 11:03 +0100)]
Unify all-zero buffers; add fwritezero()
We have a number of all-zero buffers in the code. Put a single
all-zero buffer in nasmlib.c. Additionally, add fwritezero()
which can be used to write an arbitrary number of all-zero bytes;
this prevents the situation where the all-zero buffer is simply
too small.
H. Peter Anvin [Sun, 22 Feb 2009 01:19:05 +0000 (21 17:19 -0800)]
BR
2611906: proper error message for start < origin
When a section other than .text has a start < origin, we would
segfault; fix that.
Furthermore, at bin_cleanup() we don't have usable file/line
information, so pass ERR_NOFILE to the error() function. Perhaps less
than ideal, but better than printing a null pointer.
H. Peter Anvin [Sun, 22 Feb 2009 00:58:34 +0000 (21 16:58 -0800)]
NASM 2.06rc4
H. Peter Anvin [Sun, 22 Feb 2009 00:56:52 +0000 (21 16:56 -0800)]
Fix opcode for VADDSUBPS; operands for VBLEND; add SSE for AES ops
Fix the opcode for VADDSUBPS
Fix the operands for VBLEND
Corrent the instruction flags for the AES ops (they're SSE)
H. Peter Anvin [Sun, 22 Feb 2009 00:43:48 +0000 (21 16:43 -0800)]
FMA instructions won't be in Sandy Bridge
The FMA instructions aren't scheduled for Sandy Bridge after all.
They will be "in a future processor", so create a placeholder for now.
H. Peter Anvin [Wed, 18 Feb 2009 22:13:45 +0000 (18 14:13 -0800)]
Perl script used to generate FMA instruction patterns
Small perl script used to generate the FMA instruction patterns. May
come in useful if the spec changes again.
H. Peter Anvin [Wed, 18 Feb 2009 22:13:25 +0000 (18 14:13 -0800)]
changes.src: document updated AVX specification
H. Peter Anvin [Wed, 18 Feb 2009 22:07:14 +0000 (18 14:07 -0800)]
Update the VFMA* instructions per the AVX spec version 5
Update the VFMA* instructions to match the AVX spec version 5.
Since these are highly regular, use a small Perl script to generate
the instruction patterns.
H. Peter Anvin [Wed, 18 Feb 2009 22:05:15 +0000 (18 14:05 -0800)]
insns.dat: fix minor formatting anomalies
Fix minor anomalies in insns.dat.
H. Peter Anvin [Wed, 18 Feb 2009 22:04:02 +0000 (18 14:04 -0800)]
insns.pl: handle the new VEX.DDS flag per AVX spec version 5
The AVX spec version 5 introduces the new VEX.DDS flag; support it.
H. Peter Anvin [Fri, 13 Feb 2009 17:33:56 +0000 (13 09:33 -0800)]
BR
2593349: Move version message back to stdout
Checkin
4b9358928b114caaf34a69d6fdfd3b285b7a72cc changed the version
message from stdout to stderr, but:
a) doesn't motivate the change in the commit log;
b) bundles that with other changes;
c) is inconsistent with other programs;
d) was done by me and I can't remember any reason for it.
Hence conclude it was unintentional and therefore a bug. Since this
commit was done after 2.05.01 no stable release has been affected.
H. Peter Anvin [Wed, 11 Feb 2009 18:54:59 +0000 (11 10:54 -0800)]
NASM 2.06rc3
Charles Crayne [Thu, 29 Jan 2009 03:07:18 +0000 (28 19:07 -0800)]
Allow global declaration after symbol definition
This experimental feature needs to be tested for
all output formats which recognize global symbols.
Charles Crayne [Tue, 27 Jan 2009 22:43:37 +0000 (27 14:43 -0800)]
Fix Bugs item #
2537867
Module labels.c has code to issue error message when global
directive appears after symbol definition, but the test condition
was incorrectly punctuated.
Soronel Haetir [Tue, 20 Jan 2009 02:27:11 +0000 (19 17:27 -0900)]
Document the as86 ..start label
I realized that a documentation change is required to inform users about the
addition of entry point support for the as86 format. The following produces
reasonable output for .txt output, but I am blind and so can't check the
other formats as readily.
H. Peter Anvin [Mon, 19 Jan 2009 07:04:45 +0000 (18 23:04 -0800)]
doc: clean up the "String Manipulation in Macros" section
Minor cleanups to the "String Manipulation in Macros" section.
H. Peter Anvin [Mon, 19 Jan 2009 06:59:13 +0000 (18 22:59 -0800)]
doc: indent the time macro example
Indent the time macro example for ease of reading.
H. Peter Anvin [Mon, 19 Jan 2009 06:55:53 +0000 (18 22:55 -0800)]
doc: fix typo
verson -> version
H. Peter Anvin [Mon, 19 Jan 2009 06:55:33 +0000 (18 22:55 -0800)]
Merge branch 'master' of git+ssh://repo.or.cz/srv/git/nasm
H. Peter Anvin [Mon, 19 Jan 2009 06:51:46 +0000 (18 22:51 -0800)]
doc: update the section on numeric constants
Update the section on numeric constants, and add a few more examples.