No description
Find a file
Peter Johnson 90a38d71b0 Rewrite x86 identifier recognition to use a minimal perfect hash table
instead of re2c-generated code.  This gives identifier recognition a
significant speedup and also drastically shortens compilation time of yasm
itself.  This rewrite encouraged combining instruction and prefix
recognition into one function and register and target modifier
recognition into a second function (rather than having 5 or so separate
functions).

Also created a state in the NASM parser (as was done in the GAS parser),
so instructions/prefixes are only looked for until an instruction is
recognized.  This avoids search time in the instructions hash for operands.

The tool used to generate the new identifier recognition is called GAP.
Someday we might extend this to generate more code than just the perfect
hash lookup.

* tools/gap: New tool to Generate Architecture Parser (aka perfect hashes).
* phash.c, phash.h: Helper functions used by GAP-generated code.

* x86id.re: Delete.  Split into..
* x86parse.gap: Contains all identifier recognition portions.
* x86id.c: Contains instruction operand tables and code and higher-level
entry points into x86parse.gap perfect hash recognizers.  Chose to flow
history of x86id.re into this file.

* arch.h: Combine instruction/prefix entry points and register/target
modifier entry points.
* lc3barch.c, lc3bid.re, lc3barch.h: Update to match.
* x86arch.c, x86arch.h: Update to match.

* Makefile.am, various Makefile.inc: Update.
* POTFILES.in: Update due to numerous file changes (not just this commit).
* Mkfiles: Update.  VC build files untested at the moment.

svn path=/trunk/yasm/; revision=1395
2006-03-04 22:09:26 +00:00
config ltmain.sh: Remove FreeBSD hack that prevents static libraries from being built 2004-08-15 01:46:22 +00:00
float Initial revision 2003-02-09 19:36:34 +00:00
frontends Fix #70 by allowing overrides on the default (usually ".text") section. 2006-02-25 19:39:57 +00:00
libyasm Rewrite x86 identifier recognition to use a minimal perfect hash table 2006-03-04 22:09:26 +00:00
m4 * hamt.c: Use uintptr_t to correctly cast to integer from pointer. On some 2005-09-05 20:53:07 +00:00
Mkfiles Rewrite x86 identifier recognition to use a minimal perfect hash table 2006-03-04 22:09:26 +00:00
modules Rewrite x86 identifier recognition to use a minimal perfect hash table 2006-03-04 22:09:26 +00:00
po Rewrite x86 identifier recognition to use a minimal perfect hash table 2006-03-04 22:09:26 +00:00
tests/nasm Add automated arch/x86 tests. Some were moved from tests/nasm, others are new. 2002-10-03 19:10:56 +00:00
tools Rewrite x86 identifier recognition to use a minimal perfect hash table 2006-03-04 22:09:26 +00:00
.indent.pro Update to match outfmt->objfmt change. 2001-09-15 07:17:38 +00:00
ABOUT-NLS Update auto*, libtool, libltdl, and gettext scripts. 2004-08-14 23:07:58 +00:00
Artistic.txt Clarify licensing. 2003-07-11 04:35:42 +00:00
AUTHORS Update addresses. 2002-11-21 06:25:08 +00:00
autogen.sh * On most files: re-enable $IdPath$ as $Id$, and enable Id keyword expansion. 2004-09-04 01:24:57 +00:00
BSD.txt Clarify licensing. 2003-07-11 04:35:42 +00:00
ChangeLog Initial checkin of automake/autoconf files. 2001-06-27 22:45:20 +00:00
configure.ac * configure.ac: Add checks for unistd.h and getcwd(). These will be needed 2006-02-10 05:34:31 +00:00
COPYING * COPYING: Revert unintentional change to text of GPL license made in r1127. 2004-08-16 05:12:03 +00:00
GNU_GPL-2.0 Update FSF address in GPL and LGPL licenses. 2006-02-04 04:33:27 +00:00
GNU_LGPL-2.0 Update FSF address in GPL and LGPL licenses. 2006-02-04 04:33:27 +00:00
HACKING * configure.ac: Remove check for groff, add check for xmlto. 2004-09-07 07:39:26 +00:00
INSTALL Initial checkin of automake/autoconf files. 2001-06-27 20:07:20 +00:00
libyasm.h Greatly simplify build system by removing libtool and integrating formerly 2004-12-01 07:49:18 +00:00
Makefile.am Rewrite x86 identifier recognition to use a minimal perfect hash table 2006-03-04 22:09:26 +00:00
NEWS Initial checkin of automake/autoconf files. 2001-06-27 20:07:20 +00:00
out_test.sh Modify the output for 'make check' to be much less verbose, and thus 2005-03-16 05:26:35 +00:00
README Initial checkin of automake/autoconf files. 2001-06-27 20:07:20 +00:00
splint.sh Split split parameters into separate lines to make it much easier to edit. 2002-04-22 01:55:23 +00:00
test_hd.c * On most files: re-enable $IdPath$ as $Id$, and enable Id keyword expansion. 2004-09-04 01:24:57 +00:00
util.h Build cleanups (mostly for warnings) for VC8. 2006-01-11 05:51:32 +00:00
yasm.1 Move pregenerated man pages to root. 2005-01-14 05:25:30 +00:00
yasm_arch.7 Move pregenerated man pages to root. 2005-01-14 05:25:30 +00:00