mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2024-11-27 22:22:17 +00:00
verbose switches for the qcvm; makes -printfuns find the instruction-count of a function and print that too
This commit is contained in:
parent
aee7bf0de0
commit
47f7611ec9
1 changed files with 47 additions and 6 deletions
47
exec.c
47
exec.c
|
@ -832,7 +832,9 @@ static void usage()
|
||||||
" -disasm-func func disassemble and exit\n"
|
" -disasm-func func disassemble and exit\n"
|
||||||
" -printdefs list the defs section\n"
|
" -printdefs list the defs section\n"
|
||||||
" -printfields list the field section\n"
|
" -printfields list the field section\n"
|
||||||
" -printfuns list functions information\n");
|
" -printfuns list functions information\n"
|
||||||
|
" -v be verbose\n"
|
||||||
|
" -vv be even more verbose\n");
|
||||||
printf("parameters:\n");
|
printf("parameters:\n");
|
||||||
printf(" -vector <V> pass a vector parameter to main()\n"
|
printf(" -vector <V> pass a vector parameter to main()\n"
|
||||||
" -float <f> pass a float parameter to main()\n"
|
" -float <f> pass a float parameter to main()\n"
|
||||||
|
@ -891,6 +893,7 @@ int main(int argc, char **argv)
|
||||||
bool noexec = false;
|
bool noexec = false;
|
||||||
const char *progsfile = NULL;
|
const char *progsfile = NULL;
|
||||||
const char **dis_list = NULL;
|
const char **dis_list = NULL;
|
||||||
|
int opts_v = 0;
|
||||||
|
|
||||||
arg0 = argv[0];
|
arg0 = argv[0];
|
||||||
|
|
||||||
|
@ -907,8 +910,23 @@ int main(int argc, char **argv)
|
||||||
usage();
|
usage();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
else if (!strcmp(argv[1], "-v") ||
|
else if (!strcmp(argv[1], "-v")) {
|
||||||
!strcmp(argv[1], "-version") ||
|
++opts_v;
|
||||||
|
}
|
||||||
|
else if (!strncmp(argv[1], "-vv", 3)) {
|
||||||
|
const char *av = argv[1]+1;
|
||||||
|
for (; *av; ++av) {
|
||||||
|
if (*av == 'v')
|
||||||
|
++opts_v;
|
||||||
|
else {
|
||||||
|
usage();
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--argc;
|
||||||
|
++argv;
|
||||||
|
}
|
||||||
|
else if (!strcmp(argv[1], "-version") ||
|
||||||
!strcmp(argv[1], "--version"))
|
!strcmp(argv[1], "--version"))
|
||||||
{
|
{
|
||||||
version();
|
version();
|
||||||
|
@ -1105,10 +1123,33 @@ int main(int argc, char **argv)
|
||||||
for (a = 0; a < prog->functions[i].nargs; ++a) {
|
for (a = 0; a < prog->functions[i].nargs; ++a) {
|
||||||
printf(" %i", prog->functions[i].argsize[a]);
|
printf(" %i", prog->functions[i].argsize[a]);
|
||||||
}
|
}
|
||||||
|
if (opts_v > 1) {
|
||||||
|
int32_t start = prog->functions[i].entry;
|
||||||
|
if (start < 0)
|
||||||
|
printf(") builtin %i\n", (int)-start);
|
||||||
|
else {
|
||||||
|
size_t funsize = 0;
|
||||||
|
prog_section_statement *st = prog->code + start;
|
||||||
|
for (;st->opcode != INSTR_DONE; ++st)
|
||||||
|
++funsize;
|
||||||
|
printf(") - %lu instructions", (unsigned long)funsize);
|
||||||
|
if (opts_v > 2) {
|
||||||
|
printf(" - locals: %i + %i\n",
|
||||||
|
prog->functions[i].firstlocal,
|
||||||
|
prog->functions[i].locals);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (opts_v) {
|
||||||
printf(") locals: %i + %i\n",
|
printf(") locals: %i + %i\n",
|
||||||
prog->functions[i].firstlocal,
|
prog->functions[i].firstlocal,
|
||||||
prog->functions[i].locals);
|
prog->functions[i].locals);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
printf(")\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!noexec) {
|
if (!noexec) {
|
||||||
for (i = 1; i < vec_size(prog->functions); ++i) {
|
for (i = 1; i < vec_size(prog->functions); ++i) {
|
||||||
|
|
Loading…
Reference in a new issue