= 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/>.
* 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/>.