H. Peter Anvin
12fc7bc4b2
Add test cases for IP-relative addressing
2007-08-29 15:49:53 +00:00
H. Peter Anvin
150e20db50
Suppress IP-relative only for fs: and gs: overrides
...
AMD has (undocumented) segment limits even in 64-bit mode, so people
may want to use cs/ds/es/ss overrides. Since there are no bases, however,
IP-relative still applies.
See:
http://www.amd.com.hk/us-en/assets/content_type/DownloadableAssets/dwamd_kernel_summit_08_RB.pdf
2007-08-29 15:19:19 +00:00
H. Peter Anvin
99c4ecd18f
Implement REL/ABS modifiers
...
Implement "REL" and "ABS" modifiers for offsets in 64-bit mode. This
replaces "rip+XXX" type addressing. The infrastructure to set the default
mode is there, but there is nothing to throw the switch just yet.
2007-08-28 23:06:00 +00:00
Frank Kotler
352170d5eb
attempt to make static makefiles aware of outelf32/outelf64
2007-08-26 05:51:39 +00:00
Frank Kotler
7fcda399cd
add nasm_strsep to nasmlib, for output/outmacho.c - strtok doesn't work
2007-08-26 05:48:54 +00:00
Frank Kotler
2ad45a56b4
remove "#include <unistd.h> from rdoff directory - two places - it annoyed Windows users and seems unneeded
2007-08-26 05:41:33 +00:00
Frank Kotler
155eef6a3d
finally commit Mike Frysinger's "elf-visibility" patch
2007-08-26 05:10:24 +00:00
H. Peter Anvin
85f5f148bb
regs.pl: handle dashed sequences with suffixes
...
Handle dashed sequences with suffixes. Use that for r8-r15[bwd].
2007-08-20 21:03:14 +00:00
H. Peter Anvin
fc918885e0
sync.c: change ULONG_MAX to UINT32_MAX
...
The value returned is uint32_t, not unsigned long. This creates a
warning when compiling on 64-bit machines.
2007-08-20 20:10:04 +00:00
H. Peter Anvin
ea8a28253b
Add _MIN and _MAX macros for the fixed-size types.
2007-08-20 20:09:11 +00:00
H. Peter Anvin
3b69717a12
ldrdf: cast output of sizeof() before passing to printf(), to avoid warning.
...
The C99 way of doing this would be to use %zu, but that requires intrinsic
C library support.
2007-08-20 20:02:17 +00:00
Keith Kanios
d94764bec0
Fixed RIP address processing ambiguity found by Charles Crayne.
2007-08-19 18:49:26 +00:00
Keith Kanios
48af17738c
Fixed issues with REX prefix effective address generation. Fixed XMM instruction output.
2007-08-17 07:37:52 +00:00
Keith Kanios
e5b47ab1c8
Changed MMXREG and XMMREG flags to help resolve invalid REX prefix generation for MMX instructions.
2007-08-17 02:03:10 +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
H. Peter Anvin
52daec56f9
Detect missing <inttypes.h> and include ersatz version if missing
2007-06-21 19:00:12 +00:00
H. Peter Anvin
fa87e1a088
inttypes.h: for older preprocessors, specify L and LL as appropriate
2007-06-21 06:24:23 +00:00
H. Peter Anvin
0f9cdb2a59
inttypes.h: Fix spelling of SHRT_MAX
2007-06-21 06:20:43 +00:00
H. Peter Anvin
272b6c7295
inttypes.h: do a single ersatz <inttypes.h> based on <limits.h>
2007-06-21 06:15:42 +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
ca9f626ba8
Fix the [U]INT*_C() creation macros
...
The [U]INT*_C() macros were broken, because ## takes precedence over
macro resolution.
2007-06-02 02:26:21 +00:00
H. Peter Anvin
f209f7b1e8
For platforms that don't have them, provide <inttypes.h> for common models.
...
Apparently, some platforms (*cough* MSVC *cough*) haven't figured out what
year it is and are behind the curve. Provide <inttypes.h> for common
memory models. We can add more if there are odd platforms which don't
have "long long" for 64 bits, too.
2007-06-02 00:05:35 +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
021993cf64
Machine-generated \321->\324 corrections
...
Use a script to find \321's that should be \324's. This is not in any
way guaranteed to be an exhaustive list, however, I have manually verified
that all the items that *were* changed *should* be changed.
2007-05-30 22:20:01 +00:00
Frank Kotler
6000b34929
update "version" to 0.99.02
2007-05-30 21:22:33 +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
ff69805feb
Update dependencies.
2007-05-30 18:30:18 +00:00
Frank Kotler
f20f692156
update cvs server name in misc/release script
2007-05-30 16:34:29 +00:00
H. Peter Anvin
a1abb32004
Avoid magic values; we have more than 124 registers now
...
There was a magic hard-coded constant that register numbers were between
1 and 124. Well, we have about 150 registers now, and that broke.
2007-05-30 04:28:50 +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
06bf8db596
More \321 -> \324
...
More \321 that should be \324...
2007-05-30 03:44:50 +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
1cf9c9d3ab
MOV reg64,reg64 takes \324 (64 bit with REX) not \321 (32 bit)
2007-05-30 02:48:51 +00:00
H. Peter Anvin
dbf130e681
Rename REGNORM to REG_EA
...
Rename REGNORM to REG_EA to make the distinction between REG_GPR and
REG_EA clearer.
2007-05-30 00:18:26 +00:00
H. Peter Anvin
1ffbd70af0
More instruction flag surgery
2007-05-30 00:15:25 +00:00
H. Peter Anvin
edb1428239
More cleanup of operand flags/register classes
2007-05-30 00:05:00 +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
7a83374a9c
Run "make alldeps"
2007-05-29 21:44:55 +00:00
Frank Kotler
d528759e72
update version number to 0.99.01
2007-05-24 22:33:07 +00:00
H. Peter Anvin
fb658ae61b
regs.dat: fix comment
2007-05-15 04:33:43 +00:00
H. Peter Anvin
90b9417613
16-bit relocations are standard in ELF64 (at my request, incidentally)
2007-05-04 18:47:16 +00:00
Chuck Crayne
b7eea1c940
Addition of elf32 and elf64 output formats.
...
Addition of ! as unary operator in expression evaluation.
Allow numeric constants in DQ directive.
2007-05-04 02:16:08 +00:00
Chuck Crayne
cb9bc21374
Allow '!' to be used in expressions with same meaning as in C.
2007-05-02 04:21:26 +00:00
Chuck Crayne
60ae75d3ab
Add %IFN and %ELIFN as per RFE #786286
2007-05-02 01:59:16 +00:00
Chuck Crayne
45ef7e76ee
Accept responsibility for support of outelf64.c
2007-04-30 22:26:58 +00:00
Chuck Crayne
8ab0320f02
Clarify comments about relocation entries.
2007-04-29 20:57:53 +00:00
Chuck Crayne
1c270b7fe2
Allow ELF32 to be invoked either as -f elf or -f elf32
2007-04-29 00:28:24 +00:00
Chuck Crayne
6e61733e38
Eliminate shift count warnings when building on 32-bit systems
...
Remove define for DEBUG
2007-04-28 22:18:04 +00:00