no vaporware ...
C++ Compiler, C++ Obfuscator, Small C for WinNT, Java bytecode viewer
Last updated: 31/Mar/2009
Only the Embedded C++ features are implemented, that means that templates, exceptions etc are not implemented. If you are interested in Embedded C++ (EC++ for short) take a look at http://www.caravan.net/ec2plus/.
Compiles NASM assembler v0.98
This release is for testing actual code generation. In my opinion Ncc now can handle 'C++ compatible' C rather good. The compiler parses C++ OK even though rather much of the semantics is missing. The code generation is still lacking a bit, such as bit-fields and floating point. structs are implemented but no class-specific features. Use the -S flag to get NASM-compatible assembler output, the compiler will warn for constructs it cannot handle.
Please note that the code produced is totally unoptimized. The internal structure will provide for superb optimization in the future since the backend has a complete syntax tree for the whole C++ file to operate on. The tree may be 'decorated' with tentative asm-output (and/or virtual machine instructions) that may be rewritten recursively in later passes without losing the original C++ information.
A feature is the -X flag that generates textual output of the C++
code (declarations, statements and expressions), it may be useful for
understanding declarations like those you may find in
I know that the compiler contains bugs and/or unimplemented semantics. Anyhow, if you find severe bugs or something you are missing, feel free to send me an email, maybe I can fix it. There are many things that are actually easy to implement if someone wants it. Thanks to all who already have contacted me, you are helping me a lot.
The download contains the compiler, demos like 'fib' and 'sieve' and batch-files to produce executables (requires library and linker from VC5 or VC6 and the NASM assembler). Included are also makefiles to make the famous NASM assembler (v0.97 and v0.98) as well as the freeware linker ALINK. ALINK is written by Anthony A.J. Williams
With the download is bat-files etc included that will give you the answer
to how many file-openings there are when you #include
This is a modified scanner that keeps the escape-sequences, and has
an option that keeps the #include directive for system include-files (that
is #include
The download contains the scanner, the benchmark 'sieve' and a batch-file to produce an 'obfuscated' output.
Since I have had no emails about my scanner (maybe because it is bugfree ;) I have not updated it, but if you have a need for a new one please email me. Note that my new preprocessor is faster than the one used here.
Download scanner Updated: 02/Dec/98Status: Not so ambitious, it is a hack attack just to learn Java bytecode
and the file layout of class-files.� I hope to supplement it with
something that can read the disassembled output, thus giving a pair of
tools that can patch classfiles. It can handle most of the obfuscated outputs
I encountered, if not please send me the classfile and I can hopefully fix it
Yes give it to me Updated: 30/Jan/98
Small C is not dead, and it should not be! It is a nice way to learn about
compilers because of it small size and uncomplicated design. Here is an
original from 1988 for MSDOS written by J.E. Hendrix:
SmallC v2.2 16 bit for MSDOS
Small C 32 bit v 3.0 - MASM output
And now 10 years later, a 32bit port for Windows NT. It is not complete but
it comes with source code and it is at least capable of compiling itself.
Has Microsoft MASM output.
SmallC v3.0 32 bit for WinNT (MASM) Updated: 11/Jun/98
Small C 32 bit v 3.1 - NASM output
Slightly improved from v3.0, full source for compiler and library. Emits
NASM-compatible assembler. NASM is a freeware assembler that may be found at
http://www.web-sites.co.uk/nasm/
SmallC v3.1 32 bit for WinNT (NASM) Updated: 20/Nov/98
If you have any questions please feel free to contact me.
Last updated: 31/Mar/2009 Hans T Walheim