Commit Graph

630 Commits

Author SHA1 Message Date
H. Peter Anvin
6fa5c358b5 Fix order of token arguments
Order of token arguments was reversed, but tokens.dat wasn't updated
accordingly.  Fix.
2007-09-10 23:30:21 +00:00
H. Peter Anvin
f5843c614a assemble.c: correct special handing of ESP/RSP
Correct the special handling of ESP/RSP (must be in the base register
slot, but requires SIB.)
2007-09-10 18:59:26 +00:00
H. Peter Anvin
309a8ba340 tokhash: correct duplicate-token test 2007-09-10 18:59:01 +00:00
H. Peter Anvin
d555a64a7f tokhash: adjust table types to reduce size
Adjust the sizes of data types to reduce the total size of the tokhash
data structure.
2007-09-10 18:58:40 +00:00
H. Peter Anvin
a80241f58a Fix the MMXREG and XMMREG flags definitions. 2007-09-10 18:55:52 +00:00
H. Peter Anvin
f6abe44fc8 nasm.spec.in: Copyright -> License 2007-09-05 06:48:38 +00:00
H. Peter Anvin
52e30171ee Fix "make tar"; useful for RPM testing 2007-09-05 06:40:51 +00:00
H. Peter Anvin
da51fc9dac Remove obsolete Serial: construct; we shouldn't need it anyway. 2007-09-05 06:24:43 +00:00
Chuck Crayne
199b96a810 Provide 64-bit support for ORG directive 2007-09-04 01:29:43 +00:00
H. Peter Anvin
53a3c687dd Fix some MMX/SSE irregularities which interact with the 64-bit support 2007-09-02 16:37:03 +00:00
H. Peter Anvin
e17a3cb29d phash.ph: yet another attempt at getting Perl to behave, arithmetically 2007-09-02 14:46:00 +00:00
H. Peter Anvin
4768f5f6f2 Simple 64-bit org test 2007-09-02 06:23:29 +00:00
H. Peter Anvin
e3e9e9fa0d phash.ph: remove some stale code
Remove old randomization code which is no longer used.
2007-09-02 06:20:15 +00:00
Chuck Crayne
757dfad900 Force use of integer values for generating hash keys. 2007-09-02 01:00:34 +00:00
H. Peter Anvin
b938e043ca phash: don't rely on the build platform Perl version of rand()
rand() in Perl can vary between platforms, so don't use it.  Instead,
remove a completely pointless level of indirection (it introduced a
permutation which cancelled itself out) and provide a canned set of
random numbers for the rest.  This guarantees we will always use the
same numbers.
2007-08-31 18:10:23 +00:00
H. Peter Anvin
96a810256f tokhash.pl: formatting changes for readability
No functional change
2007-08-31 07:31:51 +00:00
H. Peter Anvin
91a86cdb31 tokhash: Speed up the rejection of unhashed values
Speed up the rejection of unhashed values (typically identifiers) by
filling unused hash slots with a large value (but not so large that
it is likely to overflow.)  This means those values will be rejected
already by the range check, not needing strcmp().
2007-08-31 07:23:31 +00:00
H. Peter Anvin
535af831f1 tokhash.pl: "ix" should have the same width as the "hash" arrays
For correctness in case of a very "linear" graph, "ix" needs to have
the same width as the "hash" arrays.
2007-08-31 06:06:17 +00:00
H. Peter Anvin
9e4dba2f47 Add "do not edit" comment to tokhash.c 2007-08-31 00:28:35 +00:00
H. Peter Anvin
29b1bc4603 Make the token hash a bit smaller by using 16-bit hash tables 2007-08-31 00:23:40 +00:00
H. Peter Anvin
2c29a0b264 Minor cleanup; remove duplication of names.c 2007-08-31 00:16:10 +00:00
H. Peter Anvin
fb5a599c8a phash.ph: use a bipartite graph to reduce the storage requirements
Since we fold the f- and g-functions together, if we guarantee that g is
bipartite, we can make g twice the size of f without cost.  This greatly
improves the odds of generating a smaller hash.
2007-08-30 23:42:39 +00:00
H. Peter Anvin
74cc5e569c Finishing touches on perfect hash tokenizer; actually turn the thing on
Finish the perfect hash tokenizer, and actually enable it.

Move stdscan() et al to a separate file, since it's not needed in any
of the clients of nasmlib other than nasm itself.

Run make alldeps.
2007-08-30 22:35:34 +00:00
H. Peter Anvin
b1dabe44ac Makefile rule for tokhash.c 2007-08-30 21:50:20 +00:00
H. Peter Anvin
6efa472d21 tokens.dat: Data file containing alphanumeric tokens not in other .dats 2007-08-30 21:47:46 +00:00
H. Peter Anvin
e9d1a97b88 Generate a perfect hash for the token parser 2007-08-30 21:45:56 +00:00
H. Peter Anvin
67858426e4 Fix bugs in repeated suffix handling, which led to missing r8d/r8w/r8d 2007-08-30 21:40:08 +00:00
H. Peter Anvin
215c1a3781 phash.ph: more powerful prehashing 2007-08-30 21:39:37 +00:00
H. Peter Anvin
b44d7a76a2 Make the perfect hash generator an includable module 2007-08-30 20:15:25 +00:00
H. Peter Anvin
490bbcd047 Correct the logic for recording fs: and gs: overrides. 2007-08-29 20:30:31 +00:00
H. Peter Anvin
b838bcfe9f Generate R_X86_64_64 relocations in elf64 output
When appropriate, generate R_X86_64_64 relocations in elf64 output.
2007-08-29 18:20:19 +00:00
H. Peter Anvin
7a089c0fc7 Add README file 2007-08-29 17:24:03 +00:00
H. Peter Anvin
16a76654b8 Create a Perl library directory, and add the Graph module to it
Graph-0.84 from CPAN
2007-08-29 17:20:09 +00:00
H. Peter Anvin
8781c6a5f3 Perfect hash generator, as a perl script
Requires the CPAN Graph module.
2007-08-29 17:05:17 +00:00
H. Peter Anvin
3894519675 Use standard macro for the default directive 2007-08-29 16:41:43 +00:00
H. Peter Anvin
4fd320ef82 Add standard macro for [default] directive 2007-08-29 16:40:26 +00:00
H. Peter Anvin
859f085985 More test cases for rel and abs addressing 2007-08-29 16:38:47 +00:00
H. Peter Anvin
62b24d7e2f Add [default] directive
Add the [default {abs|rel}] directive, and clean up directive parsing.
2007-08-29 16:38:05 +00:00
H. Peter Anvin
14f8bf2edf nasmlib: add bsii() case-insensitive version of bsi() 2007-08-29 16:25:46 +00:00
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