Mercurial > repos > blastem
diff dis.c @ 197:7c227a8ec53d
Add instruction address logging to translator and support for reading an address log to the disassembler
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 17 Jan 2013 20:00:07 -0800 |
parents | afbfb0ac0256 |
children | 140af5509ce7 |
line wrap: on
line diff
--- a/dis.c Thu Jan 17 08:19:29 2013 -0800 +++ b/dis.c Thu Jan 17 20:00:07 2013 -0800 @@ -82,6 +82,7 @@ deferred *def = NULL, *tmpd; for(uint8_t opt = 2; opt < argc; ++opt) { if (argv[opt][0] == '-') { + FILE * address_log; switch (argv[opt][1]) { case 'l': @@ -93,6 +94,26 @@ case 'o': only = 1; break; + case 'f': + opt++; + if (opt >= argc) { + fputs("-f must be followed by a filename\n", stderr); + exit(1); + } + address_log = fopen(argv[opt], "r"); + if (!address_log) { + fprintf(stderr, "Failed to open %s for reading\n", argv[opt]); + exit(1); + } + while (fgets(disbuf, sizeof(disbuf), address_log)) { + if (disbuf[0]) { + uint32_t address = strtol(disbuf, NULL, 16); + if (address) { + def = defer(address, def); + reference(address); + } + } + } } } else { uint32_t address = strtol(argv[opt], NULL, 16);