ABC (compiler)

ABC is a compiler to an esoteric language by Tom Murphy VII (tom7), published on 2017-03 for the SIGBOVIK 2017 eso-conference.

The compiler outputs such DOS EXE executables that contain only printable ASCII characters, don't modify their own code in memory while running, and only execute instructions made of only printable ASCII characters. The compiler inputs C with some reasonable restrictions. IO access of the program is very limited.

The conference paper is plain ASCII text without newlines printed 160 characters per column, and that text is the executable of an example program created by the compiler.

Challenges
One of the biggest challenges faced by the all-ASCII restriction is that the program cannot execute any jump backward, and cannot jump forward more than 127 bytes at a time. Thus an executable output by ABC just keeps looping around its 64 kilobyte long code segment, hopping over parts of the code it doesn't need.

Links

 * ABC homepage
 * Printed form of the paper “ZM #       PRinty#     C with ABC! ”
 * Raw executable form of the paper
 * Compiler source code
 * Tom's blog post (see top entry on page)
 * Tom's video explaining the paper
 * SIGBOVIK 2017 proceedings