1 #include <stdio.h> 2 #include <lightning.h> 3 4 static jit_state_t *_jit; 5 6 typedef void (*pvfi)(int); /* Pointer to Void Function of Int */ 7 main(int argc,char * argv[])8int main(int argc, char *argv[]) 9 { 10 pvfi myFunction; /* ptr to generated code */ 11 jit_node_t *start, *end; /* a couple of labels */ 12 jit_node_t *in; /* to get the argument */ 13 14 init_jit(argv[0]); 15 _jit = jit_new_state(); 16 17 start = jit_note(__FILE__, __LINE__); 18 jit_prolog(); 19 in = jit_arg(); 20 jit_getarg(JIT_R1, in); 21 jit_prepare(); 22 jit_pushargi((jit_word_t)"generated %d bytes\n"); 23 jit_ellipsis(); 24 jit_pushargr(JIT_R1); 25 jit_finishi(printf); 26 jit_ret(); 27 jit_epilog(); 28 end = jit_note(__FILE__, __LINE__); 29 30 myFunction = jit_emit(); 31 32 /* call the generated code, passing its size as argument */ 33 myFunction((char*)jit_address(end) - (char*)jit_address(start)); 34 jit_clear_state(); 35 36 jit_disassemble(); 37 38 jit_destroy_state(); 39 finish_jit(); 40 return 0; 41 } 42