Libtcc and gwan

14
libtcc AND GWAN [email protected]

description

 

Transcript of Libtcc and gwan

Page 1: Libtcc and gwan

libtcc AND GWAN

[email protected]

Page 2: Libtcc and gwan

Language Java JavaScript

C Scala

Page 3: Libtcc and gwan

Platform Node.js Django Play

Page 4: Libtcc and gwan

Tcc: Tiny C Compiler

1. C Script Support

Page 5: Libtcc and gwan

C Script #! /usr/bin/tcc -run int main() { printf("Hello World\n"); return 0; }

Page 6: Libtcc and gwan

Tcc: Tiny C Compiler

2. Dynamic Code Generation

Page 7: Libtcc and gwan

int add(int a, int b) { return a + b; } char my_program[] = "int foo(int n)\n" "{\n" " printf(\"Hello World!\\n\");\n" " printf(\"fib(%d) = %d\\n\", n, fib(n));\n" " printf(\"add(%d, %d) = %d\\n\", n, 2 * n, add(n, 2 * n));\n" " return 0;\n" "}\n";

Code Generation

Page 8: Libtcc and gwan

TCCState *s; s = tcc_new(); tcc_set_output_type(s, TCC_OUTPUT_MEMORY); if (tcc_compile_string(s, my_program) == -1) return 1; tcc_add_symbol(s, "add", add); size = tcc_relocate(s, NULL); if (size == -1) return 1; mem = malloc(size); tcc_relocate(s, mem); func = tcc_get_symbol(s, "foo"); if (!func) return 1; tcc_delete(s); func(32); free(mem);

Code Generation

Page 9: Libtcc and gwan

charsyam@charsyam-lv63:~/repo/libtcc$ ./a.out Hello World! fib(32) = 2178309 add(32, 64) = 96

Code Generation

Page 10: Libtcc and gwan

GWan

Web Application Server

Page 11: Libtcc and gwan

GWan Support Scripting

C Java Object C

Page 12: Libtcc and gwan

GWan wget http://gwan.com/archives/gwan_linux64-bit.tar.bz2 tar -xjf gwan_linux64-bit.tar.bz2 cd gwan_linux64-bit sudo ./gwan (./gwan -h for help)

Need javac, gobjc, gobjc++

Page 13: Libtcc and gwan

GWan charsyam@ubuntu:~/apps/gwan/0.0.0.0_8080/#0.0.0.0/csp/folder$

실제 핸들러 위치

Page 14: Libtcc and gwan

Thank You!