Home
Welcome to RMasm PDF Print E-mail

RMasm is an open-source multi-platform / multi-architecture meta-macro assembler fully written in Ruby, using Ruby itself as a the main "macro" language. The 1.0 version of RMasm is expecting to release a fully x86 32-64 bits compliant assembler.

Using Ruby as a "macro" language allows RMasm to leverage on the dynamic, reflective, general purpose object-oriented programming features provided by Ruby.This is truly a new generation of macro assembler, allowing the use of a powerful object oriented macro language : RMasm macro language relies on the well known Ruby language and not on a "custom-proprietary" language like other existing assemblers...


It means also that a variety of High Level Language features - HLL- will be accessible from RMasm while still being able to code with a plain raw assembler syntax. The nature of RMasm makes also the HLL extensible to your needs, much beyond what you have been used to!

RMasm can also be considered as a meta-assembler, as it should facilitate the development of an assembler. RMasm provides a basic architecture to handle various aspect of an assembler : register, symbol, section, struct/union, data declaration, procedure... RMasm is designed to use a plug-in assembler architecture, allowing to target assembler programs to different processors and architecture. It will be possible to add a plugin to support the Z80, Motorola 680x0... processors.


This project is just starting and thus is in a pre-alpha stage, current version is 0.1.1. A preview can be installed, although nothing is being currently generated by the assembler!

Here is an example of RMasm syntax :

  # Specify that we want to use the x86 assembler
  use :x86

  # Define a structure
  struct :MyStructure do
    db :my_field1
    dw :my_field2
    dd :my_field3
  end

  # Open the data section
  section:data

    MyStructure :my_structure_var                      # Declare a structure
    db :this_is_a_text << "This is a text directive"   # Declare a text

  # Open the code section
  section:code

  __:MyProcedure.global    # Declare the label MyProcedure and make it global (public)
    xor eax,eax
    mov [esi],eax
    ret

The web site is under construction. RMasm is expected to ship a workable alpha-release in Q1-2010, as well as some documentation and a forum.


Stay tuned!

Last Updated on Thursday, 10 December 2009 14:10
 
Copyright © 2010 RMasm Assembler, Alexandre Mutel. All Rights Reserved.
Joomla! is Free Software released under the GNU/GPL License.