64 if(!isalpha(s) && !
isdigit(s) && (s !=
'_')) {
65 if(s ==
'-' || s ==
'.' || s ==
'/') s =
'_';
79int main(
int argc,
char **argv) {
87 fputs(
"bin2s - convert binary files to assembly language\n"
88 "typical usage: bin2s foo.bin bar.bin baz.bin > foo.s\n", stderr);
92 for(arg = 1; arg < argc; arg++) {
94 if (argv[arg][0] ==
'-')
100 alignment = (argc > arg) ? strtoul(argv[++arg], 0, 0) : 0;
102 if ( alignment == 0 ) alignment =4;
109 fin = fopen(argv[arg],
"rb");
112 fputs(
"bin2s: could not open ", stderr);
117 fseek(fin, 0, SEEK_END);
118 filelen = ftell(fin);
123 fprintf(stderr,
"bin2s: warning: skipping empty file %s\n", argv[arg]);
127 char *
ptr = argv[arg];
129 char *filename =
NULL;
131 while ( (chr=*
ptr) ) {
133 if ( chr ==
'\\' || chr ==
'/') {
141 if (
NULL != filename ) {
144 filename = argv[arg];
154 fprintf( stdout,
"/* Generated by BIN2S - please don't edit directly */\n"
155 "\t.section .rodata\n"
157 "\t.global ", alignment);
159 fputs(
"_size\n", stdout);
160 fputs(
"\t.global ", stdout);
164 fputs(
":\n\t.byte ", stdout);
171 unsigned char c = fgetc(fin);
173 printf(
"%3u", (
unsigned int)
c);
180 if(++linelen >= 16) {
182 fputs(
"\n\t.byte ", stdout);
189 fputs(
"\n\n\t.global ", stdout);
191 fputs(
"_end\n", stdout);
193 fputs(
"_end:\n\n", stdout);
194 fputs(
"\t.align\n",stdout);
196 fprintf( stdout,
"_size: .int %lu\n", (
unsigned long)filelen);
int main(int argc, char **argv)
void strnident(FILE *fout, const char *src)