849 Commits

Author SHA1 Message Date
H. Peter Anvin
70c0bf22a2 BR 1834731: Remove redundant error messages for no input file
Avoid redundant error messages:

./nasm
nasm: error: no input file specified
nasm: fatal: file `' is both input and output file
type `nasm -h' for help

... which is more than a wee bit confusing to the user.
2007-11-19 11:45:40 -08:00
H. Peter Anvin
f096968998 insns.pl: remove debugging output
Remove debugging output which was never meant to be checked in.
2007-11-19 11:44:05 -08:00
H. Peter Anvin
682221438e Clean up remaining build warnings
Clean up remaining build warnings.  None of this should affect code
operations.  The only warnings which were actually relevant might have
been the ones in ldrdf.c, but it's not clear if anyone ever uses that.
2007-11-18 22:18:09 -08:00
H. Peter Anvin
a30cc07224 BR 1834292: Fix multiple disassembler bugs
- Correct the building on the disassembler decision tree.
- Handle SSE instructions with F2 prefix (\332) correctly.
- Mark instructions which are now used as prefixes with ND.
  (In a future version when we have better CPU version handling,
  we should probably build the decision tree at runtime based on
  the selected CPU feature sets.)
- Sanitize the handling of \144-147 and \154-157 in both the assembler
  and disassembler.  They take an opcode byte as argument; don't
  pretend they don't.
2007-11-18 21:55:26 -08:00
H. Peter Anvin
d0378fb1ed BR 1834056: Remove warnings in rdoff/rdoff.c
Remove warnings, especially the alias warnings in rdoff/rdoff.c.
2007-11-18 12:01:05 -08:00
H. Peter Anvin
dc24271fae BR 1091926: Bounds checking for command line parsing
Avoid failure if the command line has doctored arguments.
2007-11-18 11:55:10 -08:00
H. Peter Anvin
24588d35e7 Remove FIXME from documentation
This better work now, we're in release candidate mode.
2007-11-17 21:21:18 -08:00
Charles Crayne
db90f35d89 Check in Keith's Fixes
1. Don't warn on 32-bit overflow
2. Change EM64T to Intel 64 in Defining CPU Dependencies
   section of documentation.
2007-11-17 21:08:33 -08:00
H. Peter Anvin
c9588ea1bc Make the definition for float_const() match the prototype
The definition for float_const() had int32_t, the prototype had only
int.  We only care about the sign, so int makes more sense.
2007-11-17 14:35:19 -08:00
H. Peter Anvin
b284e48ae2 NASM 2.00rc1 nasm-2.00rc1 2007-11-16 00:03:02 -08:00
H. Peter Anvin
423e381dd7 Clean up the command-line parsing; make -w/-W match others
Clean up the command-line parsing and make -w/-W match the behaviour
of all the other options with regards to arguments.
2007-11-15 17:12:29 -08:00
H. Peter Anvin
7812644665 BR 993895: Support zero-operand floating-point insn
Support the zero-operand form of floating-point instructions.  Note
that in most cases, the form generated is actually the "popping" form,
e.g. "FADD" becomes "FADDP st0,st1".  This is in accordance with the
Intel documentation.  "FADDP" is also supported.
2007-11-15 14:38:19 -08:00
H. Peter Anvin
428fd671ec Remove some vestiges of "native" RESW/RESD support
We now internally convert all RESx opcodes to RESB, so we don't need
support for that in the assembler.
2007-11-15 10:25:52 -08:00
H. Peter Anvin
604a3f4e21 outbin.c: fix one missed change from type -> size
Fix one missed change from "type" to "size".  May want to look through
all the other backends as well for similar issues.

This would generate the wrong section lengths, with obviously bad results.
2007-11-15 10:24:55 -08:00
root
dbb1828ad5 Support setting OSABI value in ELF header. 2007-11-13 19:52:54 -08:00
H. Peter Anvin
c68ec01277 Enable a few warnings by default; clean up warning descriptions 2007-11-13 11:34:34 -08:00
H. Peter Anvin
b030c92fee Add gcc-style -W/-Wno- warning selections; -Wall; -Werror
Add gcc-style -Wxxx -Wno-xxx warning selection as an alternative to
-w+xxx/-w-xxx.

Add "all" as an alias for all (actual) warnings.

Add "error" to treat warnings as errors.
2007-11-13 11:31:15 -08:00
H. Peter Anvin
c170867864 Clean up the fwrite*() function definitions somewhat
Slight cleanup of the fwrite*() functions.  This actually helps gcc
generate better code on i386, for no apparent reason.
2007-11-13 10:37:23 -08:00
H. Peter Anvin
4095197f6c Cast 64-bit switch expressions to (int) to keep OpenWatcom happy
Our size arguments are 64-bit values, but we don't need that range for
anywhere where we need a switch.  OpenWatcom can't deal with them
(sigh), so cast them to (int) for now.
2007-11-13 09:49:51 -08:00
H. Peter Anvin
d13f30e08f x86-host-specific performance improvement
If we're on an x86 host, we can do unaligned littleendian memory
references directly.  Just do'em.
2007-11-13 09:46:38 -08:00
H. Peter Anvin
d1fb15c154 Address data is int64_t; simplify writing an address object
Address data is always int64_t even if the size itself is smaller;
this was broken on bigendian hosts (still need testing!)

Create simple "write sized object" macros.
2007-11-13 09:37:59 -08:00
H. Peter Anvin
a5fb90834a ndisasm: factor out the common operand-extraction code
Factor out the common operand-extraction code in the disassembler, as
previously done in the assembler.
2007-11-12 23:00:31 -08:00
H. Peter Anvin
bb72f7f111 Un-special-case "xchg rax,rax"; disassemble o64
Un-special-case "xchg rax,rax"; allow it to be encoded as 48 90 for
orthogonality's sake.  It's a no-op, to be sure, but so are many other
instructions.

"xchg eax,eax" is still special-cased in 64-bit mode since it is not a
no-op; unadorned opcode 90 is now simply "nop" and nothing else.

Make the disassembler detect unused REX.W and display them as an "o64"
prefix.
2007-11-12 22:56:07 -08:00
H. Peter Anvin
fb0c90cdbe BR 1709392: Fix alignment handling in Mach-O format
Fix alignment handling in the Mach-O format.  The patch is from the
bug report, mangled to apply to the current source base.  I have no
way to test this, so I'm going to have to assume it's correct.
2007-11-12 22:11:46 -08:00
H. Peter Anvin
4b3390eb47 BR 1828866: fix handling of LAR/LSL
Fix handling of LAR/LSL with various sized operands
2007-11-12 22:05:31 -08:00
H. Peter Anvin
e8cdcdcc37 Better (but not *good!*) handling of 64-bit addressing in ndisasm
More correct -- but not fully correct -- handing of 64-bit addressing
in ndisasm.  In particular, we need to generate "a32" versus "dword"
where applicable.
2007-11-12 21:57:00 -08:00
H. Peter Anvin
2344010d26 Fix disassembly of XCHG
"REX.B 90" in 64-bit mode is "xchg eax,r8d" not "nop"; equivalent
situation for "REX.WB 90" (xchg rax,r8).
2007-11-12 21:02:33 -08:00
H. Peter Anvin
f72151f43e Test of XCHG
Test for XCHG
2007-11-12 20:18:33 -08:00
H. Peter Anvin
aff9c93aa4 Fix handling of XCHG in 64-bit mode
The handling of XCHG in 64-bit mode somewhat broken.  Add a register
flag for "not accumulator", so we can generate all the appropriate
modes.
2007-11-12 20:18:05 -08:00
H. Peter Anvin
ce6c8a7929 More \321 -> \324 bug fixes
Additional \321 flags (o32) that should be \324 (o64).
2007-11-12 19:36:13 -08:00
H. Peter Anvin
136dcdbd42 float.c: all warnings and errors are pass 1 only
None of the floating-point errors or warnings are anything but pass 1
only; use the ERR_PASS1 flag to capture that.
2007-11-12 18:26:31 -08:00
Charles Crayne
c22ae5cb12 Update documentation for stack relative directives.
Bring a few other sections up to date.
2007-11-10 21:55:19 -08:00
Charles Crayne
2321d930ec Clean up a few more 32-bit bottlenecks 2007-11-10 17:52:23 -08:00
Charles Crayne
9fb030f8cd Update documantation for stack relative directives 2007-11-09 16:37:41 -08:00
Charles Crayne
0872deddd0 Merge branch 'master' of /home/chuck/development/gitnasm/ 2007-11-09 16:33:54 -08:00
Charles Crayne
102cdadb6f Update documentation for stack relative directives 2007-11-09 16:25:43 -08:00
H. Peter Anvin
34f6fb0a65 Don't combine type and size into a single argument
Don't combine type and size into a single argument; *every* backend
immediately breaks them apart, so it's really just a huge waste of
effort.  Additionally, it avoids using short immediates in the
resulting code, which is a bad thing.
2007-11-09 14:44:02 -08:00
Charles Crayne
7eaf919a22 Add flat64 to %stacksize choices 2007-11-08 22:11:14 -08:00
H. Peter Anvin
44d7dcf87b Fix building under OpenWatcom
OpenWatcom doesn't like 64-bit switch arguments; the change to 64-bit
type arguments caused that to happen in outmacho.c.  Hack around it
for now; however, realistically speaking the whole bit stealing thing
is probably a bad idea, especially since virtually all CPUs handle
short immediates better than long ones.
2007-11-08 20:43:22 -08:00
H. Peter Anvin
88602aa53a ps2pdf: remove -dOptimize=true
Remove -dOptimize=true; it actually generates larger output, since the
optimization performed is "network optimization".
2007-11-08 20:29:37 -08:00
H. Peter Anvin
ec4dc4e04b No binary files left in the source distro; unbreak release script
There are no more binary files in the source distro; this broke the
build robot.  Comment out the binary file zipping.
2007-11-08 20:21:41 -08:00
H. Peter Anvin
8781cb0d00 BR 1828103: Fix %arg and %local
Correct the implementation of %arg and %local.

It's questionable how much they make sense for 64-bit mode; even in
32-bit mode one normally make references off the stack pointer instead
of the base pointer (frame pointer), but that requires keeping track
of the stack pointer offset.
2007-11-08 20:01:11 -08:00
H. Peter Anvin
52bd38b899 nasmlib.c: prefix_name(): use the elements() macro
Use the elements() macro to count the elements in a static array.
2007-11-08 19:34:01 -08:00
H. Peter Anvin
6a6eafdcee Move elements() to nasmlib.h
Move elements() to nasmlib.h; that is the best place for this kind of
utility macros.
2007-11-08 19:30:22 -08:00
H. Peter Anvin
c84f1b927b constipate the "str" argument to bsi() and bsii()
The string argument to bsi() and bsii() should be const.
2007-11-08 19:15:33 -08:00
Charles Crayne
5fbbc8c2e7 Upgrade RAA functions to hold 64-bit data. 2007-11-07 19:03:46 -08:00
Charles Crayne
8c7eca4936 Pass 64-bit instruction lengths to back-ends. 2007-11-06 21:48:12 -08:00
Charles Crayne
1f8bc4c9a9 Prepare for 64-bit instruction lengths 2007-11-06 18:27:23 -08:00
Charles Crayne
1b851dcd04 Disambiguate error messages 2007-11-05 21:49:49 -08:00
Charles Crayne
4e8563d5c4 Upgrade label functions to 64-bit 2007-11-05 17:19:32 -08:00