Commit Graph

120 Commits

Author SHA1 Message Date
Jack Palevich a653561097 ARM codegen: Add disassembler, implement return
This program works:

    main() { return 42; }

The disassembler was borrowed from codeflinger, and just modified enough to compile
under C++ without warnings.

Implemented gsym
Implemented a hack verison of li, only works for -256..255
Implemented gjmp
2009-05-13 19:51:03 -07:00
Jack Palevich 546b2249ef Begin filling in ARM code generator.
We can now call functions that have no arguments (and return from them too!)
2009-05-13 15:10:04 -07:00
Jack Palevich 2230513fc0 Add stub Arm code generator. 2009-05-13 10:58:45 -07:00
Jack Palevich bf42c9c163 Move all x86-specific knowlege into the X86CodeGenerator. 2009-05-12 13:46:16 -07:00
Jack Palevich 21a15a2416 Various C++ improvements
+ Changed indentation, causes the stats to say there's a lot of lines changed.
+ Should be able to compile multiple times with the same compiler object.
+ Create a CodeBuffer class to hold the code.
+ Create a CodeGenerator class to encapsulate knowlege of the CPU instruction set.
+ Started filling in the code generator.
2009-05-11 18:49:27 -07:00
Frabrice Bellard a96930572c Document acc language features.
Original text from http://www.ioccc.org/2001/bellard.hint
2009-05-11 14:51:47 -07:00
Jack Palevich bbf8ab504a Added command-line option "-t" to allow run-time switching between running and dumping.
Fixed some C++ warnings reported by g++ .
Verified that the compiler actually works when run on 32-bit Linux.
2009-05-11 11:54:30 -07:00
Jack Palevich 77ae76eea9 converted to C++
Base address of constant table changed, so had to update the "-orig" files.
2009-05-10 19:59:24 -07:00
Jack Palevich f6b5a531d8 Remove all gcc warnings. 2009-05-10 19:16:42 -07:00
Jack Palevich e27bf3eb29 Replace acc.c with the contents of otccn.c, update tests.
We are no longer checking if the constant data is the same, just the
generated code.
2009-05-10 14:09:03 -07:00
Fabrice Bellard 16134598fb Original version of otccn.c from http://bellard.org/otcc/otccn.c 2009-05-10 14:01:59 -07:00
Jack Palevich 431055cc9b More deobfuscation. 2009-05-08 20:30:47 -07:00
Jack Palevich 7448a2ebb7 Converted code constants from decimal to hexidecimal. 2009-05-08 20:30:47 -07:00
Jack Palevich f0cbc92fc0 More unobfuscation. 2009-05-08 20:30:47 -07:00
Jack Palevich 50791f5466 Make our global variables static. 2009-05-08 20:30:47 -07:00
Jack Palevich d160530a58 Got rid of all warnings. (Yeah, right.) 2009-05-08 20:30:47 -07:00
Jack Palevich f54db02e5d Add a simple regression test framework. 2009-05-08 20:30:47 -07:00
Jack Palevich ae54f1fba8 Continue deobfuscation.
Add a license.

Indent the code.
Add includes for external functions.
Improve function prototypes.
Start adding the correct type to things that are pointers.
Start fixing compiler warnings.

Instead of directly executing the compiled code (which only works on x86 Linux),
write the internal compiler state to stdout. This makes it easier to test whether
or not our refactoring is breaking anything.

Return a zero status on success.

Add error checking for a missing input file.
2009-05-08 20:30:47 -07:00
Jack Palevich 883114867a Start de-obfuscation process. 2009-05-08 20:30:47 -07:00
Fabrice Bellard 38aa39a200 Original freeware Obfuscated Tiny C Compiler.
From http://bellard.org/otcc/otcc.c

License from http://bellard.org/otcc:

The obfuscated OTCC and OTCCELF are freeware.
2009-05-08 20:30:47 -07:00