radare2/binr/old.rarc2
pancake e9d1dcb4ec * Fix make w32dist
* Update manpages
* Added r2 -H for env and files help
* Add rarun2 -h
* Show assembler/disassembler features in rasm2 -L
* Add opcode 'mov dword [ebp-12],4' to x86.nz
  - Make t/test.nz work with x86.olly (32bit only atm)
* Fix unknown os issue with tiny-pe files in r_bin
* Fix some plugin names build fails in mingw32
* MAGICPATH renamed to R_MAGIC_PATH
* Add another experimental way to generate gir files
  - Added dummy test.js for nodejs
* Build python-dist in farm

--HG--
rename : man/rarc2-tool.1 => binr/old.rarc2/rarc2-tool.1
rename : man/rarc2.1 => binr/old.rarc2/rarc2.1
2011-10-12 03:24:19 +02:00
..
i * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
t * Added README documentation for libr/egg programming language 2011-09-19 02:39:33 +02:00
Makefile * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
README * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
config.def.h * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
config.h * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
emit_arm.c * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
emit_x64.c * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
emit_x86.c * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
osxtest.r * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
out.c * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
rarc2-tool * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
rarc2-tool.1 * Fix make w32dist 2011-10-12 03:24:19 +02:00
rarc2.1 * Fix make w32dist 2011-10-12 03:24:19 +02:00
rarc2.c * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
rarc2.h * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00
test.r * Deprecate rarc2 and rarc2-tool 2011-08-08 02:07:26 +02:00

README

RCC : Ralang/Relocatable Code Compiler
======================================

NASM support
------------
remove comments | grep -v '^#'
remove ptr
section .text \n global main

Compiler pipeline: the picture
------------------------------

 spp     : Simple preprocessor
  |        - includes and conditional compilation
  |
ralang   : The language
  |        - imperative and simple
  |
macros   : architecture independent assembly-like macro-based
  |        - provides calling conventions and syscall definitions
  |
assembly : macros are then converted into assembly
  |        - specific for an OS/arch
  V
gas/rasm2 : assembler compatible with GNU assembler and r2 asm
  |
  V
binary   : the executable, relocatable code
           - inject it for fun and profit


The language
------------

The ralang language aims to be an imperative high-level language providing
limited flexibility with some basic rules for parsing to simplify the
interpretation of the code.

Check t/ for examples

The compiler is a state machine where every character can modify the
internal state of itself while directly producing assembly code.

A gramatical parser is nothing more or nothing less than that. The language
must only permit constructions that can be directly mapped to machine code.

  write($1, .var0, .var4);  

Strings are encoded in the stack at runtime, variable access is done
explicitly by giving the delta offset against the base register.

   .var0 = "Hello";

Access modifiers:

   $1024   = numeric value 
   .var0   = get contents of variable
   &.var0  = get address of variable
   *.var0  = get contents of place where the var points to


							         --pancake