mirror of
https://github.com/radareorg/radare2.git
synced 2024-11-23 21:29:49 +00:00
e9d1dcb4ec
* 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 |
||
---|---|---|
.. | ||
i | ||
t | ||
config.def.h | ||
config.h | ||
emit_arm.c | ||
emit_x64.c | ||
emit_x86.c | ||
Makefile | ||
osxtest.r | ||
out.c | ||
rarc2-tool | ||
rarc2-tool.1 | ||
rarc2.1 | ||
rarc2.c | ||
rarc2.h | ||
README | ||
test.r |
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