diff options
author | Mike Pavone <pavone@retrodev.com> | 2012-11-03 21:38:28 -0700 |
---|---|---|
committer | Mike Pavone <pavone@retrodev.com> | 2012-11-03 21:38:28 -0700 |
commit | c0b3f8d6a5c1361201539c9f48a76e8aa67fd79e (patch) | |
tree | 283e4b0f876464d001c094d1f74590b7ebdbe229 /dis.c | |
parent | 81558a718ba0e10a14c5a76fe64abd8e19a3a21c (diff) |
Improve 68K instruction decoding. Add simple disassembler.
Diffstat (limited to 'dis.c')
-rw-r--r-- | dis.c | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -0,0 +1,33 @@ +#include "68kinst.h" +#include <stdio.h> +#include <stdlib.h> + +int main(int argc, char ** argv) +{ + long filesize; + unsigned short *filebuf; + char disbuf[1024]; + m68kinst instbuf; + unsigned short * cur; + FILE * f = fopen(argv[1], "rb"); + fseek(f, 0, SEEK_END); + filesize = ftell(f); + fseek(f, 0, SEEK_SET); + filebuf = malloc(filesize); + fread(filebuf, 2, filesize/2, f); + fclose(f); + for(cur = filebuf; cur - filebuf < (filesize/2); ++cur) + { + //printf("%x:", *cur); + *cur = (*cur >> 8) | (*cur << 8); + //printf("%x\n", *cur); + } + for(cur = filebuf; (cur - filebuf) < (filesize/2); ++cur) + { + printf("cur: %p: %x\n", cur, *cur); + cur = m68K_decode(cur, &instbuf); + m68k_disasm(&instbuf, disbuf); + puts(disbuf); + } + return 0; +} |