|
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! |