Est. 2003 Advanced

RosAsm

RosAsm - 'the Specific Assembler' - is Rene Tournois's self-hosting, all-in-one Win32 x86 assembler: a single GPL executable combining assembler, source-level debugger, disassembler and resource editor, built to produce PE files directly with no separate linker step and no C-like HLL constructs

Created by Rene Tournois (known online as "Betov"), based in the Meuse region of France; continued from 2003 by a small independent group of contributors including Ludwig Hahne, Gustavo Trigueiros ("Guga") and others

Paradigm Assembly language: a low-level, imperative Intel x86 assembler with a NASM-inspired but deliberately reformed syntax. It deliberately excludes C-like high-level constructs (no STRUC, PROC, USES or LOCALS), leaving structured-programming abstractions to a user-extensible macro and pre-parser system rather than the core language
Typing Untyped at the language level, in the manner of assembly language; data is declared and addressed by size specifier (B$, W$, D$, F$, and so on) rather than by a type system
First Appeared 2003 - RosAsm 1.1a was released on 27 July 2003, days after Tournois left his earlier assembler project, SpAsm, on 24 July 2003. SpAsm itself ("The Specific assembler") was begun by Tournois in September 1998, with its first 32-bit release, SpAsm 1.00, in July 2000; RosAsm is a direct continuation of that codebase
Latest Version RosAsm 2.047c (11 March 2007) was the last version released by Tournois himself under the original betov.free.fr site, which is no longer online. Independent contributors continued the assembler past version 2.052f on Google Code and then GitHub, with the most recent tagged build, G37b, dated 12 June 2022

RosAsm - short for “the Specific Assembler”, though its initials are also readable as ReactOS Assembler, a naming coincidence its documentation goes out of its way to disclaim - is a 32-bit Windows x86 assembler that tries to be the only tool a programmer needs. A single GPL-licensed executable, written and self-compiled entirely in its own assembly language, bundles the assembler, a full source code editor, a resource editor, an integrated source-level debugger built on the Win32 Debug API, and a disassembler capable of turning a foreign PE file back into RosAsm source. It compiles directly to a Windows PE executable in one step, with no separate linker, and stores the original source text inside the very executable it produces. It is a niche, community-maintained project with a small but devoted following in the demoscene-adjacent Win32 assembly world, and it has had no confirmed public activity since 2022.

History and Origins

RosAsm’s story begins with an earlier project. In September 1998, Rene Tournois, writing under the pseudonym “Betov,” started out using the free version of Eric Isaacson’s A86/A386 shareware assembler before moving on to the 32-bit ASM32 assembler from Intelligent Firmware, whose simplicity and reliability for systems programming convinced him he could build something better himself. The result was SpAsm - “The Specific assembler” - whose first fully independent 32-bit release, SpAsm 1.00, appeared in July 2000. Tournois maintained SpAsm largely alone for several years, releasing it under the GPL as a gift to the assembly-language community.

On 24 July 2003, after a dispute over the project’s direction, Tournois left SpAsm. Three days later, on 27 July 2003, he released RosAsm 1.1a: a direct continuation of the SpAsm codebase under a new name and a fresh start for the community around it. Every RosAsm release traces its lineage back through SpAsm’s earlier versions, right up to the fork point.

Design Philosophy

RosAsm’s documentation describes it as deliberately “Specific” in two senses: it is built to emit exactly one kind of output - a working Windows PE executable - and it commits to a particular programming style rather than trying to accommodate every possible one. That style rules out modular, library-based development in the traditional sense. There is no external linker and no support for producing or consuming object modules other than DLLs; instead of static libraries, RosAsm encourages “Clips” - reusable source snippets pasted directly into a project - on the theory that black-boxed, unverified library code invites more bugs than it prevents.

The language itself stays close to raw assembly. Its syntax borrows the general shape of NASM’s but reworks it throughout, and it pointedly omits the C-like structuring keywords - STRUC, PROC, USES, LOCALS - found in assemblers like MASM. Programmers who want higher-level abstractions are expected to build them themselves with RosAsm’s macro system, or to use one of its optional “Pre-Parsers,” which can layer alternative front-end syntaxes on top of the core assembler.

Key Features

  • All-in-one toolchain: assembler, source editor, resource editor, debugger and disassembler live in a single executable, with no external build tools required
  • Direct PE generation: source compiles straight to a Windows executable in one step; RosAsm embeds the original source text inside the PE file it produces
  • Source-level debugger: built on the Win32 Debug API, with breakpoints, a data viewer, a memory inspector, watchpoints and an interpreted call stack, all operating against the original source rather than raw disassembly
  • Disassembler: able to reconstruct a recompilable RosAsm source from a foreign Windows executable for small to mid-sized programs, intended chiefly as a study and translation aid
  • Full x86 instruction coverage: the FPU, MMX, 3DNow! and SSE/SSE2/SSE3 instruction sets, alongside a large bundled set of Win32 API equates and structures compiled by contributors
  • Self-hosting: RosAsm’s own source is written entirely in RosAsm and assembled by itself

Evolution

Development after 2003 was steady but small in scale. Contributors added the debugger, the Win32 documentation and library-scanning tools, a form wizard for building GUI layouts, and steadily expanded the disassembler. The last version released directly by Tournois under the project’s original site was 2.047c, dated 11 March 2007. After that, the pace of official releases slowed, and Tournois’s own hosting eventually went offline.

The community did not let the codebase disappear. Contributors continued RosAsm past version 2.052f, first through a Google Code project and later through a GitHub export (rosasmje/rosasm2052f), tagging incremental builds with a “G” version scheme. The most recent recorded tag in that repository, G37b, is dated 12 June 2022, which is the last confirmed sign of active development.

Current Relevance

RosAsm’s original home page and forum are no longer reachable, and no public activity has been found for the project since its 2022 GitHub tag. It survives today mainly as an archived curiosity for Win32 assembly enthusiasts: a handful of GitHub mirrors preserve its source and released builds, and old tutorials and demo programs - reportedly including small hobbyist games and an NES emulator written entirely in RosAsm - still circulate among people documenting Win32 assembly history. It has no packaging, no Docker image, and no cross-platform support; it was always a Windows-only tool built for a specific era of hand-written Win32 systems programming.

Why It Matters

RosAsm is a distinctive artifact of the early-2000s Win32 assembly-language hobbyist scene: a free, GPL, self-hosting alternative to commercial and closed toolchains like MASM, built by one determined programmer and a small band of volunteers who valued directness over convention. Its refusal of C-like structuring keywords, its insistence on one-click PE generation without a separate linker, and its tightly integrated source-level debugger reflect a coherent, if opinionated, philosophy about what an assembler for real applications - not just tiny demos - should look like. Even in its current dormancy, it remains a reference point for anyone tracing the lineage of independent, community-built Windows assemblers alongside contemporaries like NASM, FASM and GoAsm.

Timeline

1998-2000
Rene Tournois, writing under the name Betov, begins the SpAsm project ("The Specific assembler") in September 1998, starting from the free version of Eric Isaacson's A86/A386 16-bit shareware assembler before moving to the 32-bit ASM32 assembler by Intelligent Firmware. SpAsm 1.00, his own independent 32-bit assembler, is released in July 2000
2003
After several years developing SpAsm largely alone up through version 4.15j, Tournois leaves the SpAsm project on 24 July 2003 over disagreements about its direction. Three days later, on 27 July 2003, he releases RosAsm 1.1a, a GPL-licensed continuation of the same codebase under a new name
2003-2007
RosAsm grows into a full 32-bit development environment - assembler, integrated source editor, resource editor, disassembler and a source-level debugger built on the Win32 Debug API - contributed to by a small community including Ludwig Hahne (the debugger) and Gustavo Trigueiros (the Win32 API equates/structures documentation project and library scanner). Development culminates in version 2.047c, released 11 March 2007
2015-2016
With Tournois's own site inactive, community members preserve and continue the codebase outside RosAsm's original channels: a fork based on version 2.052f is exported from a Google Code project to GitHub (rosasmje/rosasm2052f), and a separate archive of recent builds is published as yeohhs/rosasmlatest
2022
The rosasm2052f community fork receives its last recorded update, tagged G37b, on 12 June 2022 - the most recent dated activity found for the project

Language Influence

Influenced By

SpAsm NASM

Running Today

Run examples using the official Docker image:

docker pull
Last updated: