X-Git-Url: https://git.xonotic.org/?p=xonotic%2Fgmqcc.git;a=blobdiff_plain;f=exec.c;h=29a04a3fcc689f8faeabd40264e4876a9ce2acce;hp=57b47318fab3211a8d269db944933ad26eeb95ee;hb=655c2482c97a30c3634c22a13f0ea43f946677b5;hpb=82afdb1e2cc2b9171ac79ef45b1d3743c590f0ec diff --git a/exec.c b/exec.c index 57b4731..29a04a3 100644 --- a/exec.c +++ b/exec.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012, 2013 + * Copyright (C) 2012, 2013, 2014 * Wolfgang Bumiller * Dale Weiler * @@ -66,6 +66,8 @@ qc_program_t* prog_load(const char *filename, bool skipversion) return NULL; } + util_swap_header(&header); + if (!skipversion && header.version != 6) { loaderror("header says this is a version %i progs, we need version 6\n", header.version); fs_file_close(file); @@ -114,6 +116,12 @@ qc_program_t* prog_load(const char *filename, bool skipversion) read_data1(strings); read_data2(globals, 2); /* reserve more in case a RETURN using with the global at "the end" exists */ + util_swap_statements (prog->code); + util_swap_defs_fields(prog->defs); + util_swap_defs_fields(prog->fields); + util_swap_functions (prog->functions); + util_swap_globals (prog->globals); + fs_file_close(file); /* profile counters */ @@ -587,7 +595,6 @@ cleanup: * main for when building the standalone executor */ -#if defined(QCVM_EXECUTOR) #include const char *type_name[TYPE_COUNT] = { @@ -815,6 +822,16 @@ static int qc_floor(qc_program_t *prog) { return 0; } +static int qc_pow(qc_program_t *prog) { + qcany_t *base, *exp, out; + CheckArgs(2); + base = GetArg(0); + exp = GetArg(1); + out._float = powf(base->_float, exp->_float); + Return(out); + return 0; +} + static prog_builtin_t qc_builtins[] = { NULL, &qc_print, /* 1 */ @@ -830,7 +847,8 @@ static prog_builtin_t qc_builtins[] = { &qc_strcmp, /* 11 */ &qc_normalize, /* 12 */ &qc_sqrt, /* 13 */ - &qc_floor /* 14 */ + &qc_floor, /* 14 */ + &qc_pow /* 15 */ }; static const char *arg0 = NULL; @@ -915,7 +933,7 @@ int main(int argc, char **argv) { if (argc < 2) { usage(); - exit(1); + exit(EXIT_FAILURE); } while (argc > 1) { @@ -924,7 +942,7 @@ int main(int argc, char **argv) { !strcmp(argv[1], "--help")) { usage(); - exit(0); + exit(EXIT_SUCCESS); } else if (!strcmp(argv[1], "-v")) { ++opts_v; @@ -938,7 +956,7 @@ int main(int argc, char **argv) { ++opts_v; else { usage(); - exit(1); + exit(EXIT_FAILURE); } } --argc; @@ -948,7 +966,7 @@ int main(int argc, char **argv) { !strcmp(argv[1], "--version")) { version(); - exit(0); + exit(EXIT_SUCCESS); } else if (!strcmp(argv[1], "-trace")) { --argc; @@ -977,7 +995,7 @@ int main(int argc, char **argv) { ++argv; if (argc <= 1) { usage(); - exit(1); + exit(EXIT_FAILURE); } vec_push(dis_list, argv[1]); --argc; @@ -1020,7 +1038,7 @@ int main(int argc, char **argv) { ++argv; if (argc < 2) { usage(); - exit(1); + exit(EXIT_FAILURE); } p.value = argv[1]; @@ -1037,7 +1055,7 @@ int main(int argc, char **argv) { if (progsfile) { fprintf(stderr, "only 1 program file may be specified\n"); usage(); - exit(1); + exit(EXIT_FAILURE); } progsfile = argv[1]; --argc; @@ -1047,7 +1065,7 @@ int main(int argc, char **argv) { { fprintf(stderr, "unknown parameter: %s\n", argv[1]); usage(); - exit(1); + exit(EXIT_FAILURE); } } @@ -1060,13 +1078,13 @@ int main(int argc, char **argv) { if (!progsfile) { fprintf(stderr, "must specify a program to execute\n"); usage(); - exit(1); + exit(EXIT_FAILURE); } prog = prog_load(progsfile, noexec); if (!prog) { fprintf(stderr, "failed to load program '%s'\n", progsfile); - exit(1); + exit(EXIT_FAILURE); } prog->builtins = qc_builtins; @@ -1156,7 +1174,7 @@ int main(int argc, char **argv) { if (opts_printfuns) { for (i = 0; i < vec_size(prog->functions); ++i) { int32_t a; - printf("Function: %-16s taking %i parameters:(", + printf("Function: %-16s taking %u parameters:(", prog_getstring(prog, prog->functions[i].name), (unsigned int)prog->functions[i].nargs); for (a = 0; a < prog->functions[i].nargs; ++a) { @@ -1226,7 +1244,6 @@ void prog_disasm_function(qc_program_t *prog, size_t id) { ++st; } } -#endif #else /* !QCVM_LOOP */ /* * Everything from here on is not including into the compilation of the