Projects / Yasm

Yasm

Yasm is a complete rewrite of the NASM assembler. It currently supports the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes, outputs binary, ELF32, ELF64, COFF, Mach-O (32 and 64), RDOFF2, Win32, and Win64 object formats, and generates source debugging information in STABS, DWARF 2, and CodeView 8 formats.

Tags
Licenses
Operating Systems
Implementation

Recent releases

  •  18 May 2010 16:55

    Release Notes: This release fixes ELF32 shared object relocations broken in 1.0.0. It adds support for the [warning] directive.

    •  09 Apr 2010 08:10

      Release Notes: This release adds GAS syntax preprocessor support, Visual Studio 2010 integration, and support for AMD XOP, FMA4, and CVT16 instructions. It also incorporates many bugfixes.

      •  10 Apr 2009 16:54

        Release Notes: This feature release adds basic support for TASM-like assembly syntax as well as a TASM-like command line frontend. It updates AVX and FMA instructions to the latest Intel specifications, and updates code alignment opcodes for modern processors. It also includes a number of GAS syntax fixes and other bugfixes.

        •  09 Oct 2008 18:29

          Release Notes: This release adds 64-bit Mach-O PIC support, --prefix and --suffix options for naming globals, and support for newly specified AVX/AES instructions not in the original spec. It also generates a GOTPCREL relocation for "rel wrt ..gotpc" and optimizes non-strict push to byte size in all possible cases, along with several other fixes.

          •  20 May 2008 17:24

            Release Notes: This release fixes 0.7.0 errata in Intel AVX support and CPU flags. It fixes a build issue seen on some platforms.

            Recent comments

            28 Mar 2003 23:39 brainless

            YASM CVS Site


            YASM CVS repository is located here (http://cvs.tortall.net/cgi-bin/viewcvs.cgi/?cvsroot=YASM) .

            YASM still needs programmers to help out. Please contact Peter at " peter at tortall dot net " for if you want to help out !

            01 Feb 2003 08:37 brainless

            YASM actively seeks out developers !
            The YASM project is actively looking for help from developers in its struggle to reach Milestone 2.

            Anyone who is interested please email the YASM development team contact person, Mr. Peter Johnson at " peter at tortall dot net ", for more details.

            Things that are still needed to reach the Milestone 2 include:

            Many code cleanups and bugfixes, and the support for the COFF object format with debugging information.

            Please help out the YASM project if you can.

            Thank you !

            Below you'll find the "goals" of YASM:

            YASM's syntax parser is 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.

            Its (architecture-specific) instruction parser is 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.

            Its lexer is 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.

            Ability to emulate other assemblers such as GAS, TASM, and MASM (eventually).

            An optimizer module that allows for multiple levels and types of optimization. Everything from only minimal optimization (such as in NASM) to multi-pass jump optimization is provided.

            Debugging information for more object formats: notably COFF and ELF in addition to OBJ.

            AMD x86-64 support (enabled using "BITS 64")

            64-bit (and larger) integer constants allowed (including math operations). Useful for easily expressing MMX constants using "DQ".

            Completely modularized: it is designed for multiple preprocessors, parsers, optimizers, object formats, and debugging formats. Multiple instruction sets may be supported with some additional effort.

            Internationalization support for error and warning messages.

            Again, the person to contact is Mr. Peter Johnson at " peter at tortall dot net ".

            Screenshot

            Project Spotlight

            OpenStack4j

            A Fluent OpenStack client API for Java.

            Screenshot

            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.