Open Watcom Assembler

From Wikipedia, the free encyclopedia
  (Redirected from JWASM)
Jump to: navigation, search
Open Watcom Assembler
Original author(s) Open Watcom Assembler
Operating system DOS for x86-based PCs, Microsoft Windows, GNU/Linux for x86-based PCs, OS/2 for x86-based PCs, FreeBSD for x86-based PCs.
Available in English
Type x86 assembler
Website www.openwatcom.com

Open Watcom Assembler or WASM is an x86 assembler produced by Watcom and included as part of the Watcom C/C++ compiler.[1][2] Further development is being done on the 32- and 64-bit JWASM project,[3] which more closely matches the syntax of Microsoft's assembler.[4]

There are experimental assemblers for PowerPC, Alpha AXP, and MIPS.[5]

Technical details[edit]

Assembler[edit]

  • Native support for output formats Intel OMF output formats
  • Supports Intel x86 (Pentium MMX, Pentium III-4, 3DNow!, SSE and SSE2) instruction sets.
  • Supports Microsoft macro assembler (MASM) 5 and 6 syntax (incomplete).[5]

Disassembler[edit]

There is an associated Watcom disassembler, wdis. The assembler does not have listing facilities; instead the use of wdis for generating listings is recommended.[6] wdis can read OMF, COFF and ELF object files and PE and ELF executables. It supports 16-bit and 32-bit x86 instruction set including MMX, 3DNow!, SSE, SSE2, and SSE3. Support for PowerPC, Alpha AXP, MIPS, and SPARC V8 instruction sets is also built in.[7]

JWasm[edit]

It is a fork of Wasm by Japheth with following features:

  • Native support for output formats Intel OMF (16/32-bit), MS Coff (32-bit and 64-bit), Elf (32-bit and 64-bit), Bin and DOS MZ.
  • Precompiled JWasm binaries are available for DOS, Windows and Linux. For OS/2 and FreeBSD, makefiles are supplied.
  • Supports Intel x86 (8086, 80186, 80286, 80386, 80486, Pentium, Pentium Pro), x86-64 instruction sets with SIMD (MMX, 3DNow!, SSE, SSE2, SSE3 and SSSE3, SSE4.1/2 (since Jwasm), AVX (since JWasm 2.06), VMX (Intel VT-x; AMD SVM, the latter though already implemented, currently still inactive) extensions (since JWasm 2.09)).
  • JWasm is written in C. The source is portable and has successfully been tested with Open Watcom, MS VC, GCC and more.
  • On Windows, JWasm can be used with both Win32Inc and Masm32. Since v2.01, it will also work with Sven B. Schreiber's SBS WALK32 Win32 Assembly Language Kit[8]
  • C header files can be converted to include files for JWasm with Japheth's own dedicated h2incX.
  • JWasm's source code is released under the Sybase Open Watcom Public License, which allows free commercial and non-commercial use.
  • Fully supports Microsoft macro assembler 6 syntax, all MASM 8 instructions sets.

References[edit]

  1. ^ Randall Hyde. "WASM: The Open Watcom Assembler". Retrieved 2010-02-02. 
  2. ^ Leiterman, James (2005). "MASM vs. NASM vs. TASM vs. WASM". 32/64-bit 80x86 assembly language architecture. Wordware Publishing, Inc. p. 481. ISBN 978-1-59822-002-5. Retrieved 2010-02-01. 
  3. ^ JWASM project page
  4. ^ Fog, Agner (2009), Optimizing subroutines in assembly language (2009-09-26 ed.), p. 13 
  5. ^ a b Open Watcom website: Assembler
  6. ^ OpenWatcom: "No listing files are generated [by the assembler]. Producing full listings may be a waste of effort because wdis (the Open Watcom disassembler) does a very good job. However, it could be extremely helpful to produce a dump of the internal symbol table the way MASM does, especially for diagnostic purposes."
  7. ^ Open Watcom website: Disassembler
  8. ^ The 1996 "WALK32 consists of the following main components:
    • A full-featured PE (Portable Executable) file linker called W32Link.
    • A main include file, containing Win32 constant, type, and structure definitions.
    • Another include file, containing the application and DLL startup source code.
    • Segment and PE section management macros.
    • Macros related to Unicode support.
    • Several demo applications and DLL’s.
    • A collection of programming utilities for various purposes." walk32.doc in walk32_1.zip

External links[edit]

  • wasm at openwatcom.com
  • JWASM, a 32/64 bit assembler based on WASM with syntax similar to MASM.