= RMasm

* http://rmasm.net
* http://rmasm.rubyforge.org

== DESCRIPTION:

The purpose of this project is to provide a multi-platform / multi-architecture
(x86,x64, but also why not : z80...) meta-macro assembler fully written in Ruby,
using Ruby itself as a the main "macro" language.

Using Ruby should allow RMasm to provide a variety of High Level Languages - HLL
extensions, while still being able to code with plain raw assembler.

RMasm can also be considered as a meta-assembler, as it should ease 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...

== FEATURES/PROBLEMS:

* This version is in a alpha release stage. Current features are:
* support for primitive type declaration (db,dw,dd,dq,float,double)
* support for struct and union definition
* support for module namespace for struct and unions
* basic infrastructure for x86 assembler with faked instructions (mov, push...)

== SYNOPSIS:

The purpose is to write an assembler file like this (test.rmasm):

use :x86

# Define a structure
struct :MyStructure do
byte :my_field1
word :my_field2
dword :my_field3
end

# Open the data section
section:data
MyStructure :my_structure_var
db :this_is_a_text << "This is a text directive"

# Open the code section
section:code
:MyProcedure.global # Make the MyProcedure symbol public
__:MyProcedure # This is the way to declare a label
xor eax,eax
mov [esi],eax
ret

And to be able to assemble this file and generate a .obj with rmasm executable:

rmasm --win32 test.rmasm

== REQUIREMENTS:

* RMasm is expecting to work with Ruby 1.8.x and 1.9.x versions
* RMasm should work also with JRuby 1.4 and IronRuby 0.9.2

== INSTALL:

* Install first Ruby (with RubyGems).
* Under linux : sudo gem install rmasm
* Under windows (in the bin directory of Ruby) : gem install rmasm

== LICENSE:

RMasm, a meta-macro assembler written in Ruby
Copyright (C) 2009 Alexandre Mutel (alexandre_mutel _at_ yahoo.fr)

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.