filename | test/bin2c.c |
changeset | 561:533f6b478071 |
prev | 185:6755a04c447f |
author | nkeynes |
date | Wed Nov 10 08:37:42 2010 +1000 (13 years ago) |
permissions | -rw-r--r-- |
last change | Add chain pointer to the xlat cache, so that we can maintain multiple blocks for the same address. This prevents thrashing in cases where we would other keep retranslating the same blocks over and over again due to varying xlat_sh4_mode values |
file | annotate | diff | log | raw |
nkeynes@185 | 1 | /* Converts a binary file into a C integer array (for inclusion in |
nkeynes@185 | 2 | a source file) |
nkeynes@185 | 3 | |
nkeynes@185 | 4 | (c)2000 Dan Potter |
nkeynes@185 | 5 | |
nkeynes@561 | 6 | $Id$ |
nkeynes@185 | 7 | Note: Licensed under the new BSD license, see README.KOS -NK |
nkeynes@185 | 8 | */ |
nkeynes@185 | 9 | |
nkeynes@185 | 10 | #include <stdio.h> |
nkeynes@185 | 11 | |
nkeynes@185 | 12 | void convert(char *ifn, char *ofn, char *prefix) { |
nkeynes@185 | 13 | FILE *i, *o; |
nkeynes@185 | 14 | unsigned char buffer[2048]; |
nkeynes@185 | 15 | int red, left, lc, q; |
nkeynes@185 | 16 | char buf[BUFSIZ]; |
nkeynes@185 | 17 | |
nkeynes@185 | 18 | i = fopen(ifn, "rb"); |
nkeynes@185 | 19 | o = fopen(ofn, "w"); |
nkeynes@185 | 20 | if (!i || !o) { |
nkeynes@185 | 21 | printf("error: can't open input or output file\n"); |
nkeynes@185 | 22 | return; |
nkeynes@185 | 23 | } |
nkeynes@185 | 24 | |
nkeynes@185 | 25 | fseek(i, 0, SEEK_END); left = ftell(i); fseek(i, 0, SEEK_SET); |
nkeynes@185 | 26 | setbuf(o, buf); |
nkeynes@185 | 27 | |
nkeynes@185 | 28 | fprintf(o, "const int %s_size = %d;\n", prefix, left); |
nkeynes@185 | 29 | fprintf(o, "const unsigned char %s_data[%d] =", prefix, left); |
nkeynes@185 | 30 | fprintf(o, "{\n\t"); |
nkeynes@185 | 31 | |
nkeynes@185 | 32 | lc = 0; |
nkeynes@185 | 33 | while(left > 0) { |
nkeynes@185 | 34 | red = fread(buffer, 1, 2048, i); |
nkeynes@185 | 35 | left -= red; |
nkeynes@185 | 36 | for (q=0; q<red; q++) { |
nkeynes@185 | 37 | fprintf(o, "0x%02x, ", buffer[q]); |
nkeynes@185 | 38 | if ((++lc) >= 8) { |
nkeynes@185 | 39 | lc = 0; |
nkeynes@185 | 40 | fprintf(o, "\n\t"); |
nkeynes@185 | 41 | } |
nkeynes@185 | 42 | } |
nkeynes@185 | 43 | } |
nkeynes@185 | 44 | |
nkeynes@185 | 45 | fprintf(o, "\n};\n"); |
nkeynes@185 | 46 | fclose(i); fclose(o); |
nkeynes@185 | 47 | } |
nkeynes@185 | 48 | |
nkeynes@185 | 49 | int main(int argc, char **argv) { |
nkeynes@185 | 50 | |
nkeynes@185 | 51 | char *prefix; |
nkeynes@185 | 52 | |
nkeynes@185 | 53 | argc--; |
nkeynes@185 | 54 | if (argc != 2 && argc != 3) { |
nkeynes@185 | 55 | printf("usage: bin2c <input> <output> [prefix]\n"); |
nkeynes@185 | 56 | return 0; |
nkeynes@185 | 57 | } |
nkeynes@185 | 58 | |
nkeynes@185 | 59 | prefix = (argc == 3) ? argv[3] : "file"; |
nkeynes@185 | 60 | convert(argv[1], argv[2], prefix); |
nkeynes@185 | 61 | return 0; |
nkeynes@185 | 62 | } |
nkeynes@185 | 63 |
.