Problemas com os relocs
[pspdecompiler.git] / main.c
blob230d652966b2b26e70b7c82c9f7e9f495b169af8
1 #include <stdio.h>
3 #include "prx.h"
4 #include "analyser.h"
5 #include "nids.h"
6 #include "hash.h"
7 #include "utils.h"
9 int main (int argc, char **argv)
11 char *prxfilename = NULL;
12 char *nidsfilename = NULL;
14 int i, j, verbose = 0;
16 struct nidstable *nids = NULL;
17 struct prx *p = NULL;
18 struct code *c;
20 for (i = 0; i < argc; i++) {
21 if (argv[i][0] == '-') {
22 char *s = argv[i];
23 for (j = 0; s[j]; j++) {
24 switch (s[j]) {
25 case 'v': verbose++; break;
26 case 'n':
27 if (i == (argc - 1))
28 fatal (__FILE__ ": missing nids file");
30 nidsfilename = argv[++i];
31 break;
34 } else {
35 prxfilename = argv[i];
39 if (!prxfilename)
40 fatal (__FILE__ ": missing prx file name");
42 if (nidsfilename)
43 nids = nids_load (nidsfilename);
46 p = prx_load (prxfilename);
47 if (!p)
48 fatal (__FILE__ ": can't load prx `%s'", prxfilename);
50 if (nids)
51 prx_resolve_nids (p, nids);
53 if (verbose > 2 && nids)
54 nids_print (nids);
56 if (verbose > 0) prx_print (p);
58 c = analyse_code (p);
59 if (!c)
60 fatal (__FILE__ ": can't analyse code `%s'", prxfilename);
62 if (verbose > 1) print_code (c);
63 free_code (c);
65 prx_free (p);
67 if (nids)
68 nids_free (nids);
70 return 0;