How to create a lightweight C code sandbox?

前端 未结 13 1198
天涯浪人
天涯浪人 2020-11-29 19:43

I\'d like to build a C pre-processor / compiler that allows functions to be collected from local and online sources. ie:

#fetch MP3FileBuilder http://scripts         


        
13条回答
  •  野性不改
    2020-11-29 19:52

    I stumbled upon Tiny C Compiler (TCC). This may be what I need:

    *  SMALL! You can compile and execute C code everywhere, for example on rescue disks (about 100KB for x86 TCC executable, including C preprocessor, C compiler, assembler and linker).
    * FAST! tcc generates x86 code. No byte code overhead. Compile, assemble and link several times faster than GCC.
    * UNLIMITED! Any C dynamic library can be used directly. TCC is heading torward full ISOC99 compliance. TCC can of course compile itself.
    * SAFE! tcc includes an optional memory and bound checker. Bound checked code can be mixed freely with standard code.
    * Compile and execute C source directly. No linking or assembly necessary. Full C preprocessor and GNU-like assembler included.
    * C script supported : just add '#!/usr/local/bin/tcc -run' at the first line of your C source, and execute it directly from the command line.
    * With libtcc, you can use TCC as a backend for dynamic code generation.
    

    It's a very small program which makes hacking on it a viable option (hack GCC?, not in this lifetime!). I suspect it will make an excellent base to build my own restricted compiler from. I'll remove support for language features I can't make safe and wrap or replace the memory allocation and loop handling.

    TCC can already do bounds checking on memory accesses, which is one of my requirements.

    libtcc is also a great feature, since I can then manage code compilation internally.

    I don't expect it to be easy but it gives me hope I can get performance close to C with less risks.

    Still want to hear other ideas though.

提交回复
热议问题