/**** This is the Mic-1 linker ****/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define HEADERS 1
#define NO_HEADERS 0
typedef struct nament{
char name[26];
int addr;
struct nament *next;
}SYMTABENTRY;
void add_symbol(char * symbol, int line_number);
void generate_code(int);
void print_first_pass(int);
void append_table(void);
void dump_table(void);
SYMTABENTRY *symtab = NULL;
FILE *p1, *p2;
char cstr_12[13];
int main(int argc, char *argv[])
{
int i, start, pc_offset=0, pc=0;
int linum=0, object_file=0, dump_tab=0;
int line_number, new_pc;
char instruction[18];
char symbol[26];
/***
for(i=0; i<argc; i++){
printf("arg %d is %s\n", i, argv[i]);
}
***/
if(argc > 1 && (strcmp(argv[1], "-s") == 0)) dump_tab = linum = 1;
else if(argc > 1 && (strcmp(argv[1], "-o") == 0)) object_file = 1;
if(dump_tab == 1 | object_file == 1)start=2;
else start = 1;
p1 = fopen("/tmp/passone", "w+");
unlink("/tmp/passone");
for(i=start; i<argc; ++i){
if((p2 = fopen(argv[i], "r")) == NULL){
printf("ERROR: cannot open file %s\n", argv[i]);
exit(6);
}
while(fscanf(p2,"%d %s", &pc, instruction) != EOF){
if(pc == 4096)break;
new_pc = pc + pc_offset;
symbol[0] = '\0';
if(instruction[0] == 'U'){
fscanf(p2, "%s", symbol);
}
fprintf(p1, " %d %s %s\n", new_pc, instruction, symbol);
}
while(fscanf(p2,"%s %d",symbol, &line_number) != EOF){
add_symbol(symbol, line_number+pc_offset);
}
pc_offset = new_pc + 1;
fclose(p2);
}
LyoqKiogVGhpcyBpcyB0aGUgTWljLTEgbGlua2VyICoqKiovCgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CgojZGVmaW5lIEhFQURFUlMgICAgICAgICAxCiNkZWZpbmUgTk9fSEVBREVSUyAgICAgIDAKCnR5cGVkZWYgc3RydWN0IG5hbWVudHsKICAgICAgICBjaGFyICAgbmFtZVsyNl07CiAgICAgICAgaW50ICAgIGFkZHI7CiAgICAgICAgc3RydWN0IG5hbWVudCAqbmV4dDsKfVNZTVRBQkVOVFJZOwoKCnZvaWQgIGFkZF9zeW1ib2woY2hhciAqIHN5bWJvbCwgaW50IGxpbmVfbnVtYmVyKTsKdm9pZCAgZ2VuZXJhdGVfY29kZShpbnQpOwp2b2lkICBwcmludF9maXJzdF9wYXNzKGludCk7CnZvaWQgIGFwcGVuZF90YWJsZSh2b2lkKTsKdm9pZCAgZHVtcF90YWJsZSh2b2lkKTsKCgpTWU1UQUJFTlRSWSAqc3ltdGFiID0gTlVMTDsKRklMRSAgKnAxLCAqcDI7CmNoYXIgIGNzdHJfMTJbMTNdOwoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewoJaW50ICBpLCBzdGFydCwgcGNfb2Zmc2V0PTAsIHBjPTA7CglpbnQgIGxpbnVtPTAsIG9iamVjdF9maWxlPTAsIGR1bXBfdGFiPTA7CiAgICAgICAgaW50ICBsaW5lX251bWJlciwgbmV3X3BjOwoJY2hhciBpbnN0cnVjdGlvblsxOF07CgljaGFyIHN5bWJvbFsyNl07CgovKioqCglmb3IoaT0wOyBpPGFyZ2M7IGkrKyl7CgkgIHByaW50ZigiYXJnICVkIGlzICVzXG4iLCBpLCBhcmd2W2ldKTsKCX0KKioqLwoKICAgICAgICBpZihhcmdjID4gMSAmJiAoc3RyY21wKGFyZ3ZbMV0sICItcyIpID09IDApKSBkdW1wX3RhYiA9IGxpbnVtID0gMTsKICAgICAgICBlbHNlIGlmKGFyZ2MgPiAxICYmIChzdHJjbXAoYXJndlsxXSwgIi1vIikgPT0gMCkpIG9iamVjdF9maWxlID0gMTsKCglpZihkdW1wX3RhYiA9PSAxIHwgb2JqZWN0X2ZpbGUgPT0gMSlzdGFydD0yOwoJZWxzZSBzdGFydCA9IDE7IAoKCXAxID0gZm9wZW4oIi90bXAvcGFzc29uZSIsICJ3KyIpOwogICAgICAgIHVubGluaygiL3RtcC9wYXNzb25lIik7CgoJZm9yKGk9c3RhcnQ7IGk8YXJnYzsgKytpKXsKCQlpZigocDIgPSBmb3Blbihhcmd2W2ldLCAiciIpKSA9PSBOVUxMKXsKCQkgIHByaW50ZigiRVJST1I6IGNhbm5vdCBvcGVuIGZpbGUgJXNcbiIsIGFyZ3ZbaV0pOwoJCSAgZXhpdCg2KTsKCQl9CgkJd2hpbGUoZnNjYW5mKHAyLCIlZCAlcyIsICZwYywgaW5zdHJ1Y3Rpb24pICE9IEVPRil7CgkJICBpZihwYyA9PSA0MDk2KWJyZWFrOwoJCSAgbmV3X3BjID0gcGMgKyBwY19vZmZzZXQ7CgkJICBzeW1ib2xbMF0gPSAnXDAnOwoJCSAgaWYoaW5zdHJ1Y3Rpb25bMF0gPT0gJ1UnKXsKICAgICAgICAgICAgCSAgICBmc2NhbmYocDIsICIlcyIsIHN5bWJvbCk7CgkJICB9CgkJICBmcHJpbnRmKHAxLCAiICAlZCAgJXMgICVzXG4iLCBuZXdfcGMsIGluc3RydWN0aW9uLCBzeW1ib2wpOwoJCX0KCQl3aGlsZShmc2NhbmYocDIsIiVzICVkIixzeW1ib2wsICZsaW5lX251bWJlcikgIT0gRU9GKXsKCQkgIGFkZF9zeW1ib2woc3ltYm9sLCBsaW5lX251bWJlcitwY19vZmZzZXQpOwoJCX0KCQlwY19vZmZzZXQgPSBuZXdfcGMgKyAxOwoJCWZjbG9zZShwMik7Cgl9Cg==
Main.java:3: error: illegal character: '#'
#include <stdio.h>
^
Main.java:3: error: class, interface, or enum expected
#include <stdio.h>
^
Main.java:4: error: illegal character: '#'
#include <stdlib.h>
^
Main.java:5: error: illegal character: '#'
#include <string.h>
^
Main.java:7: error: illegal character: '#'
#define HEADERS 1
^
Main.java:8: error: illegal character: '#'
#define NO_HEADERS 0
^
Main.java:12: error: class, interface, or enum expected
int addr;
^
Main.java:13: error: class, interface, or enum expected
struct nament *next;
^
Main.java:14: error: class, interface, or enum expected
}SYMTABENTRY;
^
Main.java:17: error: class, interface, or enum expected
void add_symbol(char * symbol, int line_number);
^
Main.java:18: error: class, interface, or enum expected
void generate_code(int);
^
Main.java:19: error: class, interface, or enum expected
void print_first_pass(int);
^
Main.java:20: error: class, interface, or enum expected
void append_table(void);
^
Main.java:21: error: class, interface, or enum expected
void dump_table(void);
^
Main.java:24: error: class, interface, or enum expected
SYMTABENTRY *symtab = NULL;
^
Main.java:25: error: class, interface, or enum expected
FILE *p1, *p2;
^
Main.java:26: error: class, interface, or enum expected
char cstr_12[13];
^
Main.java:28: error: class, interface, or enum expected
int main(int argc, char *argv[])
^
Main.java:31: error: class, interface, or enum expected
int linum=0, object_file=0, dump_tab=0;
^
Main.java:32: error: class, interface, or enum expected
int line_number, new_pc;
^
Main.java:33: error: class, interface, or enum expected
char instruction[18];
^
Main.java:34: error: class, interface, or enum expected
char symbol[26];
^
Main.java:42: error: class, interface, or enum expected
if(argc > 1 && (strcmp(argv[1], "-s") == 0)) dump_tab = linum = 1;
^
Main.java:43: error: class, interface, or enum expected
else if(argc > 1 && (strcmp(argv[1], "-o") == 0)) object_file = 1;
^
Main.java:45: error: class, interface, or enum expected
if(dump_tab == 1 | object_file == 1)start=2;
^
Main.java:46: error: class, interface, or enum expected
else start = 1;
^
Main.java:48: error: class, interface, or enum expected
p1 = fopen("/tmp/passone", "w+");
^
Main.java:49: error: class, interface, or enum expected
unlink("/tmp/passone");
^
Main.java:51: error: class, interface, or enum expected
for(i=start; i<argc; ++i){
^
Main.java:51: error: class, interface, or enum expected
for(i=start; i<argc; ++i){
^
Main.java:51: error: class, interface, or enum expected
for(i=start; i<argc; ++i){
^
Main.java:54: error: class, interface, or enum expected
exit(6);
^
Main.java:55: error: class, interface, or enum expected
}
^
Main.java:58: error: class, interface, or enum expected
new_pc = pc + pc_offset;
^
Main.java:59: error: class, interface, or enum expected
symbol[0] = '\0';
^
Main.java:60: error: class, interface, or enum expected
if(instruction[0] == 'U'){
^
Main.java:62: error: class, interface, or enum expected
}
^
Main.java:64: error: class, interface, or enum expected
}
^
Main.java:67: error: class, interface, or enum expected
}
^
Main.java:69: error: class, interface, or enum expected
fclose(p2);
^
Main.java:70: error: class, interface, or enum expected
}
^
41 errors