#include #include #include int main(int argc, char** argv){ jit_context_t context; /* THE CONTEXT IN WHICH */ jit_function_t f_main; /* THE FUNCTION main */ jit_type_t signature_main; /* THE JITTED SIGNATURE FOR THE main FUNCTION */ jit_value_t value, value2, value3, value4, value5, count, test; jit_label_t label; /* CONTEXT INITIALIZATION */ context = jit_context_create(); /* A SIGNATURE FOR THE `MAIN` FUNCTION */ signature_main = jit_type_create_signature (jit_abi_cdecl, jit_type_void, NULL, 0, 0); /* CREATING THE FUNCTIONS... */ f_main = jit_function_create(context, signature_main); label = jit_label_undefined; count = jit_value_create_nint_constant(f_main, jit_type_int, 100); value = jit_value_create_nint_constant(f_main, jit_type_int, 1); value2 = jit_value_create(f_main, jit_type_int); jit_insn_store(f_main, value2, value); value3 = jit_value_create_nint_constant(f_main, jit_type_int, 3); value4 = jit_value_create(f_main, jit_type_int); jit_insn_store(f_main, value4, value3); jit_insn_label(f_main, &label); value5 = jit_insn_add(f_main, value4, value2); jit_insn_store(f_main, value4, value5); test = jit_insn_lt(f_main, value4, count); jit_insn_branch_if(f_main, test, &label); /* COMPILE THE FUNCTIONS */ jit_function_compile(f_main); /* NOW WE START TO EXECUTE THE MAIN */ jit_function_apply(f_main, NULL, NULL); return 0; }