tcc

3.0.2 • Public • Published

node-tcc

TCC bindings for node.js. You can compile C code and run it on demand.

SYNOPSIS

var TCC = require('tcc'),
var tcc = new TCC();
tcc.compile_string('int main() { return 4649; }');
var ret = tcc.run();
# => 4649

INSTALATION

node-tcc requires libtcc, compiled with -fPIC. If you OS' libtcc does not compiled with -fPIC, you need to to compile by yourself.

And so, you need to run a conifgure script with following style.

./configure --extra-cflags="-fPIC"

METHODS

Following methods are available(It's all of methods from tcc). For more details, you can read a source code(so, you can read it, since you are C hacker :P )

add_file
add_include_path
add_library
add_library_path
add_sysinclude_path
compile_string
define_symbol
output_file
run
set_output_type
set_warning
undefine_symbol
get_symbol
relocate
add_symbol

node-tcc and node-ffi

You can use node-tcc with node-ffi to load compiled code as a method for node.js.

var here = require('here').here,
    ffi = require('ffi'),
    TCC = require('tcc'),
    tcc = new TCC(),
    assert = require('assert');

tcc.compileString(''+here(/*
    int fib(int n) {
        if (n <= 2) { return 1; }
        return fib(n-1) + fib(n-2);
    }
*/));
tcc.relocate();
var fib_ptr = tcc.getSymbol('fib');
assert(!fib_ptr.isNull());
var fib = ffi.ForeignFunction(fib_ptr, 'int', ['int']);
console.log(fib(35));

Readme

Keywords

none

Package Sidebar

Install

npm i tcc

Weekly Downloads

6

Version

3.0.2

License

MIT

Last publish

Collaborators

  • tokuhirom