0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-07-24 10:25:42 -04:00

252 Commits

Author SHA1 Message Date
Keith Kanios
48af17738c Fixed issues with REX prefix effective address generation. Fixed XMM instruction output. 2007-08-17 07:37:52 +00:00
H. Peter Anvin
5b0e3eca28 More int/int32_t confusion 2007-07-07 02:01:08 +00:00
H. Peter Anvin
0ec60e69d9 regflag() should return int32_t. 2007-07-07 01:59:52 +00:00
Chuck Crayne
42fe6ce765 Support 32-bit direct addressing in 64-bit mode without base or index regs 2007-06-03 02:42:41 +00:00
H. Peter Anvin
ce2b397f1e Fix the handling of the \313 code.
\313 indicates a fixed 64-bit address size.  It was incorrectly
documented and incorrectly implemented in the assembler, and was
unimplemented in the disassembler.
2007-05-30 22:21:11 +00:00
H. Peter Anvin
c6be66fa20 Correct the generation of 67 prefixes.
The recent switch from register numbers (with -1 meaning "none") to
register flags (with 0 meaning "none") broke the generation of 67
prefixes, especially in 64-bit mode.
2007-05-30 20:30:15 +00:00
H. Peter Anvin
34539fb1ed Remove bogus redundant tests
Remove tests that are bogus (they trigger for legitimate instructions.)
The failure cases are okay anyway since they will be trapped by the
REX generation logic.
2007-05-30 04:27:58 +00:00
H. Peter Anvin
a57e8d411a Remove bogus check for 64-bitness
Remove a bogus check for 64-bit operands.  If appropriate, we will
detect this during REX generation and will bail then.  However, there
are other instructions (floating point, MMX, ...) which are legitimately
64 bits in non-64-bit mode.
2007-05-30 03:44:02 +00:00
H. Peter Anvin
3df97a7270 Get rid of magic open-coded "register numbers"
Get rid of magic open-coded register numbers.  We now keep track of
a total of three different kinds of register numbers: the register
enumeration (regs.h), the x86 register value, and the register flags.
That has all the information we need.

Additionally, do massive revamping of the EA generation code and the
REX generation logic.
2007-05-30 03:25:21 +00:00
H. Peter Anvin
5a640e1161 Clean up the existing operand flag definitions, and document 2007-05-29 23:57:12 +00:00
H. Peter Anvin
8d7316a3ff Fix the handling of \324 for computing the length
\324 means REX.W is mandatory, but that doesn't mean add a byte to the
output!  Instead, force REX.W set, and let the REX logic deal with the
length.
2007-04-18 02:27:18 +00:00
H. Peter Anvin
0db11e236b Handle "LOCK as REX.R" for MOV CRx; fix warning for invalid 64-bit regs
- MOV gpr,CRx or MOV CRx,gpr can access high control registers with a LOCK
  prefix; handle that in both the assembler and disassembler.
- Get a saner error message when trying to access high resources in
  non-64-bit mode.
2007-04-17 20:23:11 +00:00
Keith Kanios
fd5d91383a Fixed 64-bit Mode Segment Selection. 2007-04-16 15:46:46 +00:00
Keith Kanios
e83b318017 Fixed distinction between [LOCAL]SYMBOL/IMMEDIATE for RIP-relative addressing. 2007-04-16 14:31:54 +00:00
H. Peter Anvin
b061d595fb Fixes for 64-bit ndisasm.
This fixes some of the most glaring bugs in ndisasm 64-bit mode.  We're
still getting redundant prefixes for unknown reason, however.
2007-04-16 02:02:06 +00:00
Keith Kanios
3faf938f79 Fixed distinction between RIP relative symbols and immediate values. 2007-04-15 22:08:30 +00:00
Keith Kanios
61ff53c80d Added DQ constants for all BITS modes. 2007-04-14 18:54:52 +00:00
Keith Kanios
b2a0380eb8 Fixed support for DQ constants in long mode. 2007-04-14 03:52:05 +00:00
Keith Kanios
93f2e9a5a1 c99 printf/fprintf compliance. 2007-04-14 00:10:59 +00:00
Keith Kanios
a6dfa78b78 Fixed distinction between char and int8_t data types. 2007-04-13 16:47:53 +00:00
Keith Kanios
2cc61b34f0 Comment "REX.I" should have been "REX.X" 2007-04-13 01:17:45 +00:00
Keith Kanios
b7a89544d0 General push for x86-64 support, dubbed 0.99.00. 2007-04-12 02:40:54 +00:00
H. Peter Anvin
e2c80181b6 Apply Nindent to all .c and .h files 2005-01-15 22:15:51 +00:00
H. Peter Anvin
3da80c0686 Cannot free "lnfname" since it's now static... 2003-09-08 22:59:07 +00:00
Frank Kotler
abebb08083 quick fix to -f obj debug format - put "static" back in assemble.c
-
2003-09-06 04:45:37 +00:00
Frank Kotler
d0ed6fd30d Alexei's patch to allow "-I" paths to be searched for "incbin"ed files 2003-08-27 11:33:56 +00:00
H. Peter Anvin
3198beee7d Fix offset computation in the presence of explicit prefixes. 2003-07-16 19:53:51 +00:00
H. Peter Anvin
0bfed6cfdb Fix BR 632459: endianness error 2002-11-10 06:29:23 +00:00
H. Peter Anvin
bfebdb0a07 "const"-ipation fixes from Trevor Woerner 2002-09-12 02:23:54 +00:00
Debbie Wiles
0f65f885a4 Added *1 case support for NOSPLIT ([NOSPLIT EAX] to generate SIB with dword offset 0x0 2002-06-08 19:30:14 +00:00
H. Peter Anvin
232badbbbc This is the "megapatch":
a) Automatically generate dependencies for all Makefiles;
b) Move register definitions to a separate .dat file;
c) Add support for "unimplemented but there in theory" registers.
2002-06-06 02:41:20 +00:00
H. Peter Anvin
3ba467795a Deal with another case of address/operand size confusion, BR 560873 2002-05-27 23:19:35 +00:00
H. Peter Anvin
17799b40c0 JMP instructions use the operand size prefix, not the address size
prefix, to determine the size of the jump target.
2002-05-21 03:31:21 +00:00
H. Peter Anvin
01377d8d7c Implement new "strict" keyword to inhibit optimization. 2002-05-21 03:16:33 +00:00
H. Peter Anvin
87e1fcdab9 Fix sequence point problem. 2002-05-11 04:01:26 +00:00
H. Peter Anvin
09f6acbb75 NASM 0.98.21 2002-04-30 21:05:55 +00:00
H. Peter Anvin
9eb185bfdb NASM 0.98.15 2002-04-30 21:02:47 +00:00
H. Peter Anvin
ce61607e11 NASM 0.98.14 2002-04-30 21:02:23 +00:00
H. Peter Anvin
788e6c10e1 NASM 0.98.12 2002-04-30 21:02:01 +00:00
H. Peter Anvin
4cf1748e68 NASM 0.98.11 2002-04-30 21:01:38 +00:00
H. Peter Anvin
734b188090 NASM 0.98.09 2002-04-30 21:01:08 +00:00
H. Peter Anvin
1cd0e2d5bf NASM 0.98.08 2002-04-30 21:00:33 +00:00
H. Peter Anvin
af535c16cf NASM 0.98.03 2002-04-30 20:59:21 +00:00
H. Peter Anvin
41bf8002b2 NASM 0.98 2002-04-30 20:58:18 +00:00
H. Peter Anvin
ef7468f4ec NASM 0.98p7 2002-04-30 20:57:59 +00:00
H. Peter Anvin
4836e3374e NASM 0.98p3.5 2002-04-30 20:56:43 +00:00
H. Peter Anvin
eba20a73f2 NASM 0.98p3 2002-04-30 20:53:55 +00:00
H. Peter Anvin
76690a12ad NASM 0.96 2002-04-30 20:52:49 +00:00
H. Peter Anvin
6768eb71d8 NASM 0.95 2002-04-30 20:52:26 +00:00
H. Peter Anvin
d7ed89eac9 NASM 0.94 2002-04-30 20:52:08 +00:00