Changes: 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.
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.
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.
Changes from 0.6.2 to 0.7.0:
* Intel Advanced Vector Extensions (AVX) instruction support.
* Multi-section binary support (see #71, #99, [2010]).
* Add support for ELF32 and ELF64 TLS (thread local storage)
relocations.
* Allow use of 0X in addition to 0x to prefix hex constants (#127).
* Allow underscores in hex, binary, and octal constants (e.g.
0111_1111b).
* Fix memory sizes on SSE/SSE2 instructions (#119).
* Allow standalone prefixes (#122).
* Simplify new varieties of sym-sym values (#124).
* Support SAFESEH directive for win32 SEH handlers (#130).
* Enable sym@FOO constructs in GAS parser.
* SSE5 condition code support.
* Other bugfixes.
Changes:
- AMD SSE4a and SSE5 instruction support.
- AMD LZCNT, POPCNT, EXTRQ, INSERTQ, MOVNTSD, and MOVNTSS instruction support.
- 16-bit float value (IEEE-754r half precision) support (desirable for SSE5).
- Added "oword", "do", and "reso" aliases for "dqword", "ddq", "resdq".
- Added easier RIP-relative addressing with rel/abs modifiers and "default"
directive to set default rel/abs mode (see AMD64 for details).
- CPP preprocessor. Contributed by Paul Barker
- GAS local labels (1:, 1f, 1b) support. Noticed by Jung Lee
- GAS .org fill parameter support. Noticed by Jung Lee and Xiaoming Mo
- Command line aliases for -d (-D) and -u (-U) for increased NASM command line
compatibility. Requested by Mike Frysinger
- ..gotpc ELF32 bugfix: #114
- Minor bugfixes (CPU setting for a few instructions, hash lookup).
This release adds SSE4.1 and SSE4.2 instruction support, a .set
directive in the GAS parser, and allowing Mach-O custom sections.
Bugfixes include fixes to AMD Pacifica (SVM) instructions, absolute
section handling, RIP-relative cross-section references in bin
output, and many others.
New features (compared to 0.5.0):
* Brand-new "virtual" multi-pass optimizer that automatically
generates much smaller code for jumps and immediates.
* Support for Mach-O object format used in MacOS X, including
both the 32-bit (x86) and 64-bit (AMD64) versions (contributed
by Henryk Richter).
* Support for structured exception handling on Win64.
* Support for RDOFF2 (.rdf) object format.
* Support for STRICT keyword in NASM syntax.
* Rewritten NASM and GAS parsers (now recursive descent rather
than Bison-based).
* Absolute / FAR location bugfixes.
* Yasm no longer defaults to reading from standard input if no
files are specified; standard input can be specified with "-".
* Many other bugfixes.
New features in this release (compared to 0.5.0rc2):
- Support for arithmetic on single-character constants.
- Support for OUTPUT_FORMAT as an alias for YASM_OBJFMT.
- A couple of other bugfixes.
New features in this release (compared to 0.5.0rc1):
- Support for CodeView 8.0 source debugging (as used by Visual Studio
2005).
- Fixed -I support to properly handle relative paths (now the search
pattern is essentially identical to most C compilers). This change is
backwards incompatible (to both NASM and earlier Yasm versions), but
is much more consistent.
- Standard macros that provide version information: __YASM_MAJOR__,
__YASM_MINOR__, __YASM_SUBMINOR__, __YASM_BUILD__, __YASM_VERSION_ID__
and __YASM_VER__.
New features in this release (compared to 0.4.0) include:
- Aliases for AMD64 object formats: "win64" and "elf64" (these
automatically set the machine to "amd64").
- "x64" alias for Win64 object format (for easier use with Visual
Studio).
- DWARF2 debugging format (enable with "-g dwarf2").
- GAS parser good enough to take GCC output for both AMD64 and 32-bit
x86 (including DWARF2 debug information).
- Dozens of bugfixes in x86 and AMD64 support.
- Specifying "amd64" as the machine (or using a 64-bit object format)
automatically sets BITS 64.
Known issues with this release include:
- List output is buggy and often outright wrong.
- The optimizer is a very basic 2-pass style and generates inefficient
(large) code at times.
- The binary object format does not yet support sections other than
.text, .bss, and .data, unlike newer versions of NASM (see Trac bug
#71).
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
New features since 0.2.2:
* ELF AMD64 and 32-bit shared object support (using the NASM notation
"WRT ..got", etc).
* STABS debugging format (enable with "-g stabs").
* NASM-like list format.
* XDF object format (64-bit basic format, similar in spirit to NASM's RDF).
* Dozens of bugfixes in x86 and AMD64 support.
* Numerous cross-platform build fixes.
* No perl dependencies for standard build.
* New man pages: yasm(1) and yasm_arch(7).
* Full support for ELF, including support for both AMD64 and 32-bit
x86 targets; note: for AMD64 output, the machine type must be set
to "amd64" using the "-m" command line option, e.g.
"yasm -m amd64 -f elf test.asm".
* Full warnings for integer overflow.
* Full support for AMD64 RIP-relative addressing; the two forms supported
are "[rip+val]" (direct index) and "[sym wrt rip]" (relocated relative).
* Many AMD64 bugfixes including correct operand size handling (and o64
override); thanks to the many bug reports to help improve YASM in this area!
around at either build-time or at run-time is:
USE_TOOLS+= perl # build-time
USE_TOOLS+= perl:run # run-time
Also remove some places where perl5/buildlink3.mk was being included
by a package Makefile, but all that the package wanted was the Perl
executable.
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
All library names listed by *.la files no longer need to be listed
in the PLIST, e.g., instead of:
lib/libfoo.a
lib/libfoo.la
lib/libfoo.so
lib/libfoo.so.0
lib/libfoo.so.0.1
one simply needs:
lib/libfoo.la
and bsd.pkg.mk will automatically ensure that the additional library
names are listed in the installed package +CONTENTS file.
Also make LIBTOOLIZE_PLIST default to "yes".
Changes in 0.2.2:
* FAR jmp/call support.
Changes in 0.2.1:
# Added support for NASM-like -I and -P options to the preprocessor
to specify include directories and pre-included files respectively
(thanks to Michael Urman for his quick work).
# Fixed a number of issues with libtool/libltdl and module building
(these issues only affected UNIX builds).
# Made the "real" NASM preprocessor the default preprocessor. This was
not the case in the original Milestone 2 release (despite an example
to the contrary in the release notes)
YASM is a complete rewrite of the NASM assembler under the "new" BSD License
(some portions are currently under the GNU General Public License (GPL) or
the GNU Lesser General Public License (LGPL)). It is designed from the ground
up to allow for multiple assembler syntaxes to be supported (eg, NASM, TASM,
GAS, etc.) in addition to multiple output object formats. Another primary
module of the overall design is an optimizer module.
Package provided in pkgsrc-wip by Juan RP.