platform/upstream/nasm.git
17 years agoNew floating-point conversion routines
H. Peter Anvin [Tue, 16 Oct 2007 02:46:32 +0000 (19:46 -0700)]
New floating-point conversion routines

Substitute in nasm64developer's "acfloat4" routine.  This
floating-point conversion routine is not perfect (it gets a fair
number of LSB errors), but the old NASM code was just plain broken.
nasm64developer's code at least gets within ±1 LSB.

17 years agoAdd testnos3 from the gdtoa package (floating-point test)
H. Peter Anvin [Tue, 16 Oct 2007 00:48:43 +0000 (17:48 -0700)]
Add testnos3 from the gdtoa package (floating-point test)

17 years ago.gitignore file doesn't need to be in the release file
H. Peter Anvin [Sun, 14 Oct 2007 06:19:21 +0000 (23:19 -0700)]
.gitignore file doesn't need to be in the release file

17 years agoAdd .gitignore file so "git status" produces something sane
H. Peter Anvin [Sun, 14 Oct 2007 06:17:41 +0000 (23:17 -0700)]
Add .gitignore file so "git status" produces something sane

Add .gitignore file to tell git about files that don't need to be
tracked.

17 years agoautoconf: drop AC_USE_SYSTEM_EXTENSIONS to support autoconf 2.59
H. Peter Anvin [Sun, 14 Oct 2007 06:12:46 +0000 (23:12 -0700)]
autoconf: drop AC_USE_SYSTEM_EXTENSIONS to support autoconf 2.59

AC_USE_SYSTEM_EXTENSIONS requires autoconf 2.61, which is still a
little too new, apparently.  Unless we have a specific reason to
include it, don't.

17 years agoFix 32-bit types in preproc.c and eval.c
Keith Kanios [Sat, 13 Oct 2007 14:09:22 +0000 (07:09 -0700)]
Fix 32-bit types in preproc.c and eval.c

Fix 32-bit types in preproc.c and eval.c that should have been 64-bit
types.  This allows %assign to work correctly with 64-bit integers.

17 years agoMust define types before using them
Charles Crayne [Fri, 12 Oct 2007 03:32:33 +0000 (20:32 -0700)]
Must define types before using them

17 years agopreproc.c: move smacro define/undef to separate functions
H. Peter Anvin [Thu, 11 Oct 2007 20:42:09 +0000 (13:42 -0700)]
preproc.c: move smacro define/undef to separate functions

Instead of tons of replicated code, move smacro define/undef into
separate static functions.

17 years agopreproc.c: PP_DEFINE and PP_XDEFINE are case-sensitive
H. Peter Anvin [Thu, 11 Oct 2007 20:38:38 +0000 (13:38 -0700)]
preproc.c: PP_DEFINE and PP_XDEFINE are case-sensitive

The statement for case-sensitivity had PP_DEFINE and PP_IXDEFINE,
rather than PP_XDEFINE.

17 years agopreproc.c: normalize the handling of case sensitivity
H. Peter Anvin [Thu, 11 Oct 2007 19:52:03 +0000 (12:52 -0700)]
preproc.c: normalize the handling of case sensitivity

Fix a bug relating to case sensitivity, and make remaining code more
similar.

17 years agoDefine macros necessary for <inttypes.h> on C++
H. Peter Anvin [Thu, 11 Oct 2007 19:50:24 +0000 (12:50 -0700)]
Define macros necessary for <inttypes.h> on C++

NASM currently doesn't compile with a C++ compiler, but the error
messages are sometimes useful.  Define macros necessary for
<inttypes.h> to work with a C++ compiler.

17 years agoMore "bool" fixes
H. Peter Anvin [Thu, 11 Oct 2007 17:12:58 +0000 (10:12 -0700)]
More "bool" fixes

A few more variables passed as pointers which are now defined as bool *.

17 years agopreproc.c: allow 64-bit repeat counts
H. Peter Anvin [Thu, 11 Oct 2007 17:11:57 +0000 (10:11 -0700)]
preproc.c: allow 64-bit repeat counts

Allow the count of %rep to exceed 2^31.

17 years agopreproc.c: For an SMacro, in_progress really is a boolean (no %rep)
H. Peter Anvin [Thu, 11 Oct 2007 17:06:19 +0000 (10:06 -0700)]
preproc.c: For an SMacro, in_progress really is a boolean (no %rep)

17 years agoAdditional uses of bool and enum
H. Peter Anvin [Thu, 11 Oct 2007 07:05:31 +0000 (00:05 -0700)]
Additional uses of bool and enum

Proper use of bool and enum makes code easier to debug.  Do more of
it.  In particular, we really should stomp out any residual uses of
magic constants that aren't enums or, in some cases, even #defines.

17 years agopreproc.c: MMacro.in_progress is not a boolean
H. Peter Anvin [Thu, 11 Oct 2007 07:03:26 +0000 (00:03 -0700)]
preproc.c: MMacro.in_progress is not a boolean

Per the comment:

 * In a MMacro describing a `%rep' block, the `in_progress' field
 * isn't merely boolean, but gives the number of repeats left to
 * run.

This fixes the "global" directive not getting recognized, since it
repeats over all its arguments.

17 years agosaa_fread/fwrite: when seeking, must set [rw]ptr as well
H. Peter Anvin [Thu, 11 Oct 2007 01:07:51 +0000 (18:07 -0700)]
saa_fread/fwrite: when seeking, must set [rw]ptr as well

[rw]ptr represent the global position and need to be kept in sync with
[rw]pos:[rw]blk at all times.  Failed to do that while seeking, with
obviously bad results.

17 years agoUse the compiler-provided booleans if available, otherwise emulate
H. Peter Anvin [Wed, 10 Oct 2007 21:58:45 +0000 (14:58 -0700)]
Use the compiler-provided booleans if available, otherwise emulate

Both C and C++ have "bool", "true" and "false" in lower case; C
requires <stdbool.h> for this, in C++ it is an inherent type built
into the compiler.  Use those instead of the old macros; emulate with
a simple typedef enum if unavailable.

17 years agoowlinux.mak: don't clean things we won't be able to
H. Peter Anvin [Wed, 10 Oct 2007 21:55:14 +0000 (14:55 -0700)]
owlinux.mak: don't clean things we won't be able to

There won't be a Makefile in rdoff in particular, so trying to run
"make clean" there is pointless.

17 years agoconfigure.in: looks like we need autoconf 2.61 :(
H. Peter Anvin [Wed, 10 Oct 2007 21:29:53 +0000 (14:29 -0700)]
configure.in: looks like we need autoconf 2.61 :(

AC_USE_SYSTEM_EXTENSIONS is really, *really* useful, but apparently
requires autoconf 2.61...

17 years agoCreate option -Ox to tell NASM to do unlimited passes
H. Peter Anvin [Wed, 10 Oct 2007 21:06:59 +0000 (14:06 -0700)]
Create option -Ox to tell NASM to do unlimited passes

Add option -Ox to tell NASM to do as many passes as it needs, instead
of imposing a fixed number.

17 years agoRevert "floatb.asm: fix broken testcase"
H. Peter Anvin [Tue, 9 Oct 2007 02:26:57 +0000 (19:26 -0700)]
Revert "floatb.asm: fix broken testcase"

This reverts commit d9e3116be19165325ee9457bc207d47300075739.

0x513c1704 is 50.49e9, not 50.40e9

17 years agofloatb.asm: fix broken testcase
H. Peter Anvin [Tue, 9 Oct 2007 01:39:24 +0000 (18:39 -0700)]
floatb.asm: fix broken testcase

50.40e9 as a 32-bit float is 0x513c1704

17 years agosaa_rstruct: fix overrun check
H. Peter Anvin [Mon, 8 Oct 2007 19:41:00 +0000 (12:41 -0700)]
saa_rstruct: fix overrun check

The direction of the overrun test in saa_rstruct was backwards.

17 years agoAdd Frank's floattest.asm test file
H. Peter Anvin [Mon, 8 Oct 2007 19:12:23 +0000 (12:12 -0700)]
Add Frank's floattest.asm test file

17 years agosaa_fpwrite: initializing "len" should be part of the loop
H. Peter Anvin [Mon, 8 Oct 2007 04:13:14 +0000 (21:13 -0700)]
saa_fpwrite: initializing "len" should be part of the loop

"len" should properly be initialized on every turn of the loop.  It
can be initialized to any value >= blk_len that fits in a size_t.
(size_t)~0 would work except for any possible noncompliant C compilers
that have a signed size_t (illegal per C99 7.17.2).

17 years agoFix infinite loop in function saa_fpwrite
Charles Crayne [Mon, 8 Oct 2007 01:46:57 +0000 (18:46 -0700)]
Fix infinite loop in function saa_fpwrite

17 years agozerobyte.asm: use a real instruction to avoid confusing ndisasm
H. Peter Anvin [Sat, 6 Oct 2007 00:44:16 +0000 (17:44 -0700)]
zerobyte.asm: use a real instruction to avoid confusing ndisasm

It's useful to be able to disassemble a test case, so avoid mixing
data bytes and code.

17 years agozerobyte.asm: add test cases for non-initial \170 uses
H. Peter Anvin [Sat, 6 Oct 2007 00:42:31 +0000 (17:42 -0700)]
zerobyte.asm: add test cases for non-initial \170 uses

Add test cases for noninitial uses of \170, in order to test for
accidental duplication of REX prefixes.

17 years agoCheck in the proper zerobyte test
H. Peter Anvin [Sat, 6 Oct 2007 00:29:01 +0000 (17:29 -0700)]
Check in the proper zerobyte test

The previous checkin checked in zerobyte.bin, not zerobyte.asm

17 years agoEmit REX prefix before literal zero (\170)
H. Peter Anvin [Sat, 6 Oct 2007 00:04:32 +0000 (17:04 -0700)]
Emit REX prefix before literal zero (\170)

17 years agoLICENSE: Break long line
H. Peter Anvin [Sat, 6 Oct 2007 00:01:15 +0000 (17:01 -0700)]
LICENSE: Break long line

17 years agoAdd test for problematic floats
H. Peter Anvin [Fri, 5 Oct 2007 21:36:03 +0000 (14:36 -0700)]
Add test for problematic floats

17 years agofloatx.asm: add Inf and NaN to the boundary condition tests
H. Peter Anvin [Fri, 5 Oct 2007 06:51:08 +0000 (23:51 -0700)]
floatx.asm: add Inf and NaN to the boundary condition tests

17 years agofloatx.asm: add specific tests for exponent boundary conditions
H. Peter Anvin [Fri, 5 Oct 2007 06:09:19 +0000 (23:09 -0700)]
floatx.asm: add specific tests for exponent boundary conditions

Add tests for the exponent boundaries (underflow, denorm, normal).

17 years agofloat.c: correct the exponent
H. Peter Anvin [Fri, 5 Oct 2007 05:51:08 +0000 (22:51 -0700)]
float.c: correct the exponent

We would accidentally produce an exponent which was exactly +1 from
the correct one.

17 years agoAdditional rules in test/Makefile
H. Peter Anvin [Thu, 4 Oct 2007 22:18:23 +0000 (15:18 -0700)]
Additional rules in test/Makefile

Add rules for .pl -> .asm

17 years agoRewrite the handling of SAA's to allow random access
H. Peter Anvin [Thu, 4 Oct 2007 20:42:56 +0000 (13:42 -0700)]
Rewrite the handling of SAA's to allow random access

SAA's were never intended to allow random access, but several backends
do random or semirandom access via saa_fread() and saa_fwrite()
anyway.  Rewrite the SAA system to allow for efficient random access.

On "label.pl 10000000" this improves performance by a factor of 12.

17 years agoChange cloc_t to struct location, and reorder the members
H. Peter Anvin [Thu, 4 Oct 2007 04:30:57 +0000 (21:30 -0700)]
Change cloc_t to struct location, and reorder the members

Change cloc_t to struct location, and reorder the members so that it
should fit in 16 bytes instead of needing 8 bytes of extra padding on
64-bit machines.

17 years agoBR 1352920: change loc_t -> cloc_t
H. Peter Anvin [Thu, 4 Oct 2007 04:24:51 +0000 (21:24 -0700)]
BR 1352920: change loc_t -> cloc_t

Change loc_t to cloc_t to avoid AIX conflict.
We really shouldn't use _t names at all; they are usually considered
platform types, but worry about that later.

17 years agoBR 1352920: Handle upper case %line
H. Peter Anvin [Thu, 4 Oct 2007 04:22:16 +0000 (21:22 -0700)]
BR 1352920: Handle upper case %line

17 years agoUse autoconf to request feature macros
H. Peter Anvin [Thu, 4 Oct 2007 00:40:12 +0000 (17:40 -0700)]
Use autoconf to request feature macros

17 years agopreproc.c: constipation
H. Peter Anvin [Wed, 3 Oct 2007 05:04:15 +0000 (22:04 -0700)]
preproc.c: constipation

Add "const" in suitable places

17 years agomake alldeps
H. Peter Anvin [Wed, 3 Oct 2007 04:57:27 +0000 (21:57 -0700)]
make alldeps

17 years agoPortability fixes
H. Peter Anvin [Wed, 3 Oct 2007 04:53:51 +0000 (21:53 -0700)]
Portability fixes

Concentrate compiler dependencies to compiler.h; make sure compiler.h
is included first in every .c file (since some prototypes may depend
on the presence of feature request macros.)

Actually use the conditional inclusion of various functions (totally
broken in previous releases.)

17 years agoRun "make alldeps".
H. Peter Anvin [Wed, 3 Oct 2007 04:13:18 +0000 (21:13 -0700)]
Run "make alldeps".

Run "make alldeps".  This stuff probably shouldn't be checked in...

17 years agoUse the crc64 we already use as the perfect hash function prehash
H. Peter Anvin [Wed, 3 Oct 2007 00:40:00 +0000 (17:40 -0700)]
Use the crc64 we already use as the perfect hash function prehash

Use the same crc64 that we already use for the symbol table hash as
the perfect hash function prehash.  We appear to get radically faster
convergence this way, and the crc64 is probably *faster*, since the
table likely to be resident in memory.

17 years agoinsns.dat: add systematic names for the hinting NOPs (0F18-0F1F)
H. Peter Anvin [Tue, 2 Oct 2007 22:09:33 +0000 (15:09 -0700)]
insns.dat: add systematic names for the hinting NOPs (0F18-0F1F)

0F 18-1F are reserved for hinting NOPs; they all take a single memory
operand which may be sized.  Allow the use of systematic names; this
also makes sure they get sensibly disassembled.

17 years agoUnspecified files are null strings, not null pointers
H. Peter Anvin [Mon, 1 Oct 2007 18:28:32 +0000 (11:28 -0700)]
Unspecified files are null strings, not null pointers

We use empty strings, not null pointers, for unspecified files, so
there is no need to compare them for nullness.

17 years agoCheck for the most basic filename overlaps
H. Peter Anvin [Mon, 1 Oct 2007 18:26:31 +0000 (11:26 -0700)]
Check for the most basic filename overlaps

Check for the most basic filename overlaps, in case we have the
opportunity to save the user from himself.

17 years agomodified: nasm.1 to add newer command line options
Charles Crayne [Mon, 1 Oct 2007 05:15:36 +0000 (22:15 -0700)]
modified:   nasm.1 to add newer command line options
modified:   nasm.c to fully parse command line before redirecting stderr.

17 years agoMerge branch 'master' of git+ssh://ccrayne@repo.or.cz/srv/git/nasm
Charles Crayne [Sat, 29 Sep 2007 04:27:41 +0000 (21:27 -0700)]
Merge branch 'master' of git+ssh://ccrayne@repo.or.cz/srv/git/nasm

17 years agoconfigure.in: AC_SUBST_FILE should have been AC_SUBST
H. Peter Anvin [Sat, 29 Sep 2007 03:17:12 +0000 (20:17 -0700)]
configure.in: AC_SUBST_FILE should have been AC_SUBST

AC_SUBST_FILE happened to work in autoconf 2.59, but is broken in
autoconf 2.61.

17 years agoUnbreak relative references to immediate addresses
H. Peter Anvin [Sat, 29 Sep 2007 00:17:20 +0000 (17:17 -0700)]
Unbreak relative references to immediate addresses

Remove bogus "treat labels different from immediates" code, which
would result in generating of a relative mod/rm but without adjusting
the address accordingly.

Update addressing mode test.

17 years agoMerge branch 'master' of git+ssh://ccrayne@repo.or.cz/srv/git/nasm
Charles Crayne [Fri, 28 Sep 2007 22:16:47 +0000 (15:16 -0700)]
Merge branch 'master' of git+ssh://ccrayne@repo.or.cz/srv/git/nasm

17 years agolib/vsnprintf.c: correct boundary conditions
H. Peter Anvin [Fri, 28 Sep 2007 19:01:55 +0000 (12:01 -0700)]
lib/vsnprintf.c: correct boundary conditions

Correct the boundary conditions in lib/vsnprintf.c; as it was we could
have an undetected one-byte overwrite.

17 years agoAdd substitutes for snprintf() and vsnprintf()
H. Peter Anvin [Fri, 28 Sep 2007 17:50:20 +0000 (10:50 -0700)]
Add substitutes for snprintf() and vsnprintf()

To deal with fools^Wpeople trying to keep really old systems alive,
create a proper framework for substitution functions, and make it
possible to deal with the lack of snprintf/vsnprintf in particular.

17 years agoMerge branch 'master' of git+ssh://fbkotler@repo.or.cz/srv/git/nasm
Frank Kotler [Fri, 28 Sep 2007 06:03:41 +0000 (02:03 -0400)]
Merge branch 'master' of git+ssh://fbkotler@repo.or.cz/srv/git/nasm

17 years agoExclude config.h from the dependency list for the canned makefiles
H. Peter Anvin [Fri, 28 Sep 2007 04:35:04 +0000 (21:35 -0700)]
Exclude config.h from the dependency list for the canned makefiles

For the canned makefiles, we almost certainly don't have config.h, and
shouldn't include it in the list of dependencies.

17 years agoversion.pl: Add support for daily snapshot releases
H. Peter Anvin [Fri, 28 Sep 2007 04:12:17 +0000 (21:12 -0700)]
version.pl: Add support for daily snapshot releases

Add support for daily snapshot releases of the form
<ordinary version number>-<datecode>.  These are exported to programs
as the new macro __NASM_SNAPSHOT__ (only present in snapshot releases.)

17 years agoAdd Makefile for Linux -> DOS, Win32, OS/2 using OpenWatcom
H. Peter Anvin [Fri, 28 Sep 2007 02:46:55 +0000 (19:46 -0700)]
Add Makefile for Linux -> DOS, Win32, OS/2 using OpenWatcom

Add a Makefile (for GNU Make, not wmake) to cross-compile NASM for
DOS, OS/2 or Win32 using OpenWatcom.

17 years agoAdd Makefile for OpenWatcom (DOS, OS/2 or Win32 output)
H. Peter Anvin [Thu, 27 Sep 2007 02:57:07 +0000 (19:57 -0700)]
Add Makefile for OpenWatcom (DOS, OS/2 or Win32 output)

Add a Makefile for OpenWatcom using WMAKE.  This is a horrible version
of Make, but since it's bundled with OpenWatcom it is probably better
to stick to it.  It has the nice property that it can produce DOS,
Win32 or OS/2 binaries.

This Makefile currently assumes that it is hosted on a system where
pathname separators are backslashes.  For cross-compiling using
OpenWatcom on a Linux system it is probably better to write a separate
Makefile using GNU make to invoke Watcom.

17 years agoTest for various addressing modes in 64-bit mode
H. Peter Anvin [Thu, 27 Sep 2007 00:00:18 +0000 (17:00 -0700)]
Test for various addressing modes in 64-bit mode

Test of various addressing modes in 64-bit mode.  Relative addresses
specified as numbers are currently broken!!

17 years agonasm option reshuffling, -E -> -Z
H. Peter Anvin [Wed, 26 Sep 2007 22:19:28 +0000 (15:19 -0700)]
nasm option reshuffling, -E -> -Z

Old -E becomes -Z
New -E is alias for -e
Remove the obsolete -r option

17 years agoVersion 0.99.04
Frank Kotler [Wed, 26 Sep 2007 03:57:21 +0000 (23:57 -0400)]
Version 0.99.04

17 years agonasmdoc: corrections on 64-bit immediates/displacements
H. Peter Anvin [Wed, 26 Sep 2007 03:36:45 +0000 (20:36 -0700)]
nasmdoc: corrections on 64-bit immediates/displacements

Corrections the section on 64-bit immediates and displacements.  In
particular, immediates are sign-extended the same way displacements
are (and the same way 8-bit immediates are), so there is some use for
the 7-byte mov eax,dword imm form :(

17 years agonasmdoc: shorten lines which are too long
H. Peter Anvin [Tue, 25 Sep 2007 23:02:21 +0000 (16:02 -0700)]
nasmdoc: shorten lines which are too long

17 years agoDocument NASM behaviour for 64-bit immediates and displacements
H. Peter Anvin [Tue, 25 Sep 2007 23:01:07 +0000 (16:01 -0700)]
Document NASM behaviour for 64-bit immediates and displacements

Document (intended) NASM behaviour for 64-bit immediates and
displacements.

17 years agotest/movimm.asm: add optimizable forms
H. Peter Anvin [Tue, 25 Sep 2007 22:44:40 +0000 (15:44 -0700)]
test/movimm.asm: add optimizable forms

Add optimizable forms that probably should be shrunk by the optimizer.

17 years agoassemble.c: clean up whitespace
H. Peter Anvin [Tue, 25 Sep 2007 22:41:19 +0000 (15:41 -0700)]
assemble.c: clean up whitespace

Remove stray whitespace

17 years agoCorrect the handling of "MOV" with immediate in 64-bit mode
H. Peter Anvin [Tue, 25 Sep 2007 22:40:36 +0000 (15:40 -0700)]
Correct the handling of "MOV" with immediate in 64-bit mode

Correct the handling of "MOV" with immediate in 64-bit mode.  With
these changes, movimm.asm produces the desired results.

17 years agoTest of immediate handling on 64-bit mode
H. Peter Anvin [Tue, 25 Sep 2007 22:39:42 +0000 (15:39 -0700)]
Test of immediate handling on 64-bit mode

17 years agoAdd nasm_zalloc() to nasmlib.c
H. Peter Anvin [Tue, 25 Sep 2007 21:27:34 +0000 (14:27 -0700)]
Add nasm_zalloc() to nasmlib.c

Add nasm_zalloc(), a wrapper around calloc(), to allocate
zero-initialized memory.  For large allocations, this is often far
more efficient than allocating and zeroing, since the operating system
tends to keep a pool of zero pages around.

17 years agoFix BR 1490407: size of the second operand of LAR/LSL
H. Peter Anvin [Tue, 25 Sep 2007 21:11:29 +0000 (14:11 -0700)]
Fix BR 1490407: size of the second operand of LAR/LSL

The second operand of LAR/LSL is always 16 bits.

17 years agoFix BR 1490407: size of the second operand of LAR/LSL
H. Peter Anvin [Tue, 25 Sep 2007 21:11:29 +0000 (14:11 -0700)]
Fix BR 1490407: size of the second operand of LAR/LSL

The second operand of LAR/LSL is always 16 bits.

17 years agoMakefile.in: make "make install" create directories
H. Peter Anvin [Tue, 25 Sep 2007 20:34:55 +0000 (13:34 -0700)]
Makefile.in: make "make install" create directories

Make "make install" create directories if they don't already exist.

17 years agoFix BR 1445441: uninitialized use of "error_file"
H. Peter Anvin [Tue, 25 Sep 2007 15:47:47 +0000 (08:47 -0700)]
Fix BR 1445441: uninitialized use of "error_file"

17 years agopreproc.c: fix the loop in %undef
H. Peter Anvin [Tue, 25 Sep 2007 04:33:17 +0000 (21:33 -0700)]
preproc.c: fix the loop in %undef

The parent-pointer-based freeing loop in %undef should not advance the
parent pointer when a node is freed, since that will result accessing
freed memory.

17 years agofloat.c: clear off uninitialized warning
H. Peter Anvin [Tue, 25 Sep 2007 03:53:48 +0000 (20:53 -0700)]
float.c: clear off uninitialized warning

Remove uninitialized warning (harmless, but annoying.)

17 years agooutcoff: set the "virtual size field" to zero (BR 1351586)
H. Peter Anvin [Tue, 25 Sep 2007 00:02:07 +0000 (17:02 -0700)]
outcoff: set the "virtual size field" to zero (BR 1351586)

Per SF bug report 1351586:

The COFF spec suggests that the "Virtual Size" field (which
immediately follows the name field inside a section header) be set to
0 for an object file.

By contrast (as documented in comment #4 at the beginning of its
outcoff.c file) NASM sets it to a particular non-0 value.

MASM 6.15 matches NASM for both 16- and 32-bit object files,
i.e. emits non-0 values.

MASM 8 (from VS 2005 Beta) matches the COFF spec for 64-bit object
files, i.e. emits 0.

GAS matches the COFF spec for 32-bit object files (MinGW or Cygwin),
i.e. also emits 0.

Older versions of GNU ld seem to honor said "Virtual Size" field
whereas newer versions do not.  As a result those older versions
generate "bloated" image files.

Since the COFF spec and the real world seem to disagree for this case,
it might make sense to add a method for selecting between the two to
NASM.

Date: 2005-11-28 15:39
Sender: nasm64developer
Logged In: YES
user_id=804543

MASM 8 (from VS 2005 Beta) also matches the COFF spec for 16- and
32-bit object files, i.e. emits 0.

That said, NASM should always emit 0 too. Therefore I am turning this
from a support request into a bug.

17 years agoinsns.dat: SMINT - mark ND, DMINT - fix opcode
H. Peter Anvin [Mon, 24 Sep 2007 22:56:02 +0000 (15:56 -0700)]
insns.dat: SMINT - mark ND, DMINT - fix opcode

Fix the opcode for DMINT (0F 39); mark SMINT (0F 38) as ND since 0F 38
is used as a prefix by newer processors.

17 years ago0F0F is a 3Dnow! prefix; remove from prefix list
H. Peter Anvin [Mon, 24 Sep 2007 22:55:20 +0000 (15:55 -0700)]
0F0F is a 3Dnow! prefix; remove from prefix list

3Dnow! prefixes cannot be disambiguated via pointer chasing, since
the third byte of the opcode field follows the EA.

17 years agoAdditional compaction missed by script
H. Peter Anvin [Mon, 24 Sep 2007 22:48:09 +0000 (15:48 -0700)]
Additional compaction missed by script

Additional mmxreg/mem -> mmxrm and xmmreg/mem -> xmmrm compactions
which the script missed.

17 years agoinsns.dat: machine-generated compaction mmx/xmmreg,mem -> mmx/xmmrm
H. Peter Anvin [Mon, 24 Sep 2007 22:42:53 +0000 (15:42 -0700)]
insns.dat: machine-generated compaction mmx/xmmreg,mem -> mmx/xmmrm

Reduce the total instruction count by compacting mmxreg:mem pairs to
mmxrm and d:o for xmmreg:mem -> xmmrm.

17 years agonasmdoc: grammar fix
H. Peter Anvin [Mon, 24 Sep 2007 20:54:00 +0000 (13:54 -0700)]
nasmdoc: grammar fix

half -> halves

17 years agonasmdoc: remove stray periods
H. Peter Anvin [Mon, 24 Sep 2007 20:44:02 +0000 (13:44 -0700)]
nasmdoc: remove stray periods

A title line doesn't end in a period.

17 years agotest/Makefile: make a bit more useful
H. Peter Anvin [Mon, 24 Sep 2007 20:42:09 +0000 (13:42 -0700)]
test/Makefile: make a bit more useful

17 years agoImplement the -MG option (SF RFE 1564264)
H. Peter Anvin [Mon, 24 Sep 2007 20:41:58 +0000 (13:41 -0700)]
Implement the -MG option (SF RFE 1564264)

Implement the -MG option, to generate dependencies in the presence of
generated files.  In the end, we probably need to support the full
gamut of GCC-like dependency-generation options.

17 years agonasmdoc: clarify __float*__ example
H. Peter Anvin [Mon, 24 Sep 2007 19:52:09 +0000 (12:52 -0700)]
nasmdoc: clarify __float*__ example

17 years agonasmdoc: document the __float*__ operators
H. Peter Anvin [Mon, 24 Sep 2007 19:44:38 +0000 (12:44 -0700)]
nasmdoc: document the __float*__ operators

17 years agoSupport __float*__ for floating-point numbers in expressions
H. Peter Anvin [Mon, 24 Sep 2007 19:30:54 +0000 (12:30 -0700)]
Support __float*__ for floating-point numbers in expressions

Add special operators to allow the use of floating-point constants in
contexts other than DW/DD/DQ/DT/DO.

As part of this checkin, make MAX_KEYWORD generated by tokhash.pl,
since it knows what all the keywords are so it can tell which one is
the longest.

17 years agoeval.c: replace sequence of ifs with switch
H. Peter Anvin [Mon, 24 Sep 2007 17:51:07 +0000 (10:51 -0700)]
eval.c: replace sequence of ifs with switch

Replace a sequence of "if" statements with a switch.

17 years agotokhash: allow a bit smarter pattern matching
H. Peter Anvin [Mon, 24 Sep 2007 17:50:23 +0000 (10:50 -0700)]
tokhash: allow a bit smarter pattern matching

Allow constants to match only part of the token string.

17 years agoImplement INVLPGA according to the documentation
H. Peter Anvin [Sun, 23 Sep 2007 05:33:56 +0000 (22:33 -0700)]
Implement INVLPGA according to the documentation

INVLPGA is defined as taking rax,ecx but "the portion of rax used to
form the address is determined by the effective address size", so it
is really ax/eax/rax.

17 years agoReformat insns.dat to uniform column width
H. Peter Anvin [Sun, 23 Sep 2007 05:02:34 +0000 (22:02 -0700)]
Reformat insns.dat to uniform column width

Add a script to reformat insns.dat to uniform width, and use it.

17 years agoSimple test for 0x67 prefixes
H. Peter Anvin [Sun, 23 Sep 2007 04:50:03 +0000 (21:50 -0700)]
Simple test for 0x67 prefixes

17 years agoAuto-generate 0x67 prefixes without the need for \30x codes
H. Peter Anvin [Sun, 23 Sep 2007 04:49:51 +0000 (21:49 -0700)]
Auto-generate 0x67 prefixes without the need for \30x codes

Auto-generate 0x67 prefixes without the need for \30x codes; the
prefix is automatically added when there is a memory operand with
address size differing from the current address size (and impossible
combinations checked for.)

17 years agoMake test/Makefile a bit more useful
H. Peter Anvin [Sun, 23 Sep 2007 04:47:13 +0000 (21:47 -0700)]
Make test/Makefile a bit more useful

Make all the tests depend on the nasm binary...

17 years agoAdd TY_OWORD for "DO" output
H. Peter Anvin [Sun, 23 Sep 2007 04:29:41 +0000 (21:29 -0700)]
Add TY_OWORD for "DO" output

17 years agoLDDQU needs \301 (BR 1103549)
H. Peter Anvin [Sun, 23 Sep 2007 02:52:11 +0000 (19:52 -0700)]
LDDQU needs \301 (BR 1103549)