Inprise
شنبه 09 مهر 1384, 05:55 صبح
Key Current User-Visible Features ¶ (http://www.tortall.net/projects/yasm/#KeyCurrentUserVisibleFeatures)
Nearly feature-complete lexing and parsing of (preprocessed) NASM syntax (http://www.tortall.net/projects/yasm/wiki/NasmSyntax).
Limited lexing and parsing of GAS (GNU assembler) syntax? (http://www.tortall.net/projects/yasm/wiki/GasSyntax) (in progress).
AMD64 (http://www.tortall.net/projects/yasm/wiki/AMD64) support (enabled using "BITS 64" and "-m amd64" option)
64-bit (and larger) integer constants allowed (including math operations).
Internationalization support via GNU gettext (http://www.gnu.org/software/gettext/gettext.html).
A simple 2-pass optimizer (it's a bit better than the NASM one).
The "real" NASM preprocessor (imported from NASM's source tree).
Binary object file? (http://www.tortall.net/projects/yasm/wiki/BinaryObject) output (NASM style).
COFF object file? (http://www.tortall.net/projects/yasm/wiki/CoffObject) output, for use with DJGPP.
Win32 object file? (http://www.tortall.net/projects/yasm/wiki/Win32Object) output (including Win64/AMD64 support).
STABS debug format (http://www.tortall.net/projects/yasm/wiki/StabsDebug).
ELF32 and ELF64 object file (http://www.tortall.net/projects/yasm/wiki/ElfObject) output. No debugging information included at this point.
Portability; currently compilable on:
UNIX and compatibles (FreeBSD and Linux tested, GNU configure based autoconfiguration)
DOS (using DJGPP (http://www.delorie.com/djgpp/))
Windows (using Visual C++ (http://msdn.microsoft.com/vstudio/) or CygWin (http://www.cygwin.com/)).
Key Internal Features ¶ (http://www.tortall.net/projects/yasm/#KeyInternalFeatures)
A NASM syntax parser written in yacc. This simplifies the source code and increases performance: yacc-generated parsers are almost always faster than hand-written ones. Also, yacc (and its GNU implementation, bison) is an extremely well-tested and well-documented tool.
Architecture-specific instruction parsers hand-written for simplicity and size, as well as to make it easy to add additional architectures while retaining the same front-end syntax. The blend of yacc for syntax and a hand-written parser for instructions strikes a great balance between the strengths and weaknesses of each approach.
A NASM syntax (http://www.tortall.net/projects/yasm/wiki/NasmSyntax) lexer written in re2c. A highly efficient scanner generator (almost always faster than lex/flex), it's also very embeddable due to its code generation methodology, allowing a number of re2c scanners to be used in various places in yasm without any worries about naming conflicts.
A GAS syntax? (http://www.tortall.net/projects/yasm/wiki/GasSyntax) lexer and parser written in re2c and yacc, respectively.
Many of the modular interfaces at least superficially finished. This is still an area that needs a lot of work.
A small set of portable equivalants of useful functions that are standard on some systems (detected via configure), such as the queue(3) (http://www.freebsd.org/cgi/man.cgi?query=queue&sektion=3) set of functions, strdup, strcasecmp (http://www.freebsd.org/cgi/man.cgi?query=strcasecmp&sektion=3), and mergesort (http://www.freebsd.org/cgi/man.cgi?query=mergesort&sektion=3).
A decent (and growing) set of assembler test input files to test the entire assembler as well as specific modules
http://www.tortall.net/projects/yasm/
Nearly feature-complete lexing and parsing of (preprocessed) NASM syntax (http://www.tortall.net/projects/yasm/wiki/NasmSyntax).
Limited lexing and parsing of GAS (GNU assembler) syntax? (http://www.tortall.net/projects/yasm/wiki/GasSyntax) (in progress).
AMD64 (http://www.tortall.net/projects/yasm/wiki/AMD64) support (enabled using "BITS 64" and "-m amd64" option)
64-bit (and larger) integer constants allowed (including math operations).
Internationalization support via GNU gettext (http://www.gnu.org/software/gettext/gettext.html).
A simple 2-pass optimizer (it's a bit better than the NASM one).
The "real" NASM preprocessor (imported from NASM's source tree).
Binary object file? (http://www.tortall.net/projects/yasm/wiki/BinaryObject) output (NASM style).
COFF object file? (http://www.tortall.net/projects/yasm/wiki/CoffObject) output, for use with DJGPP.
Win32 object file? (http://www.tortall.net/projects/yasm/wiki/Win32Object) output (including Win64/AMD64 support).
STABS debug format (http://www.tortall.net/projects/yasm/wiki/StabsDebug).
ELF32 and ELF64 object file (http://www.tortall.net/projects/yasm/wiki/ElfObject) output. No debugging information included at this point.
Portability; currently compilable on:
UNIX and compatibles (FreeBSD and Linux tested, GNU configure based autoconfiguration)
DOS (using DJGPP (http://www.delorie.com/djgpp/))
Windows (using Visual C++ (http://msdn.microsoft.com/vstudio/) or CygWin (http://www.cygwin.com/)).
Key Internal Features ¶ (http://www.tortall.net/projects/yasm/#KeyInternalFeatures)
A NASM syntax parser written in yacc. This simplifies the source code and increases performance: yacc-generated parsers are almost always faster than hand-written ones. Also, yacc (and its GNU implementation, bison) is an extremely well-tested and well-documented tool.
Architecture-specific instruction parsers hand-written for simplicity and size, as well as to make it easy to add additional architectures while retaining the same front-end syntax. The blend of yacc for syntax and a hand-written parser for instructions strikes a great balance between the strengths and weaknesses of each approach.
A NASM syntax (http://www.tortall.net/projects/yasm/wiki/NasmSyntax) lexer written in re2c. A highly efficient scanner generator (almost always faster than lex/flex), it's also very embeddable due to its code generation methodology, allowing a number of re2c scanners to be used in various places in yasm without any worries about naming conflicts.
A GAS syntax? (http://www.tortall.net/projects/yasm/wiki/GasSyntax) lexer and parser written in re2c and yacc, respectively.
Many of the modular interfaces at least superficially finished. This is still an area that needs a lot of work.
A small set of portable equivalants of useful functions that are standard on some systems (detected via configure), such as the queue(3) (http://www.freebsd.org/cgi/man.cgi?query=queue&sektion=3) set of functions, strdup, strcasecmp (http://www.freebsd.org/cgi/man.cgi?query=strcasecmp&sektion=3), and mergesort (http://www.freebsd.org/cgi/man.cgi?query=mergesort&sektion=3).
A decent (and growing) set of assembler test input files to test the entire assembler as well as specific modules
http://www.tortall.net/projects/yasm/