fork download
  1. /**** This is the Mic-1 linker ****/
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. #define HEADERS 1
  8. #define NO_HEADERS 0
  9.  
  10. typedef struct nament{
  11. char name[26];
  12. int addr;
  13. struct nament *next;
  14. }SYMTABENTRY;
  15.  
  16.  
  17. void add_symbol(char * symbol, int line_number);
  18. void generate_code(int);
  19. void print_first_pass(int);
  20. void append_table(void);
  21. void dump_table(void);
  22.  
  23.  
  24. SYMTABENTRY *symtab = NULL;
  25. FILE *p1, *p2;
  26. char cstr_12[13];
  27.  
  28. int main(int argc, char *argv[])
  29. {
  30. int i, start, pc_offset=0, pc=0;
  31. int linum=0, object_file=0, dump_tab=0;
  32. int line_number, new_pc;
  33. char instruction[18];
  34. char symbol[26];
  35.  
  36. /***
  37. for(i=0; i<argc; i++){
  38. printf("arg %d is %s\n", i, argv[i]);
  39. }
  40. ***/
  41.  
  42. if(argc > 1 && (strcmp(argv[1], "-s") == 0)) dump_tab = linum = 1;
  43. else if(argc > 1 && (strcmp(argv[1], "-o") == 0)) object_file = 1;
  44.  
  45. if(dump_tab == 1 | object_file == 1)start=2;
  46. else start = 1;
  47.  
  48. p1 = fopen("/tmp/passone", "w+");
  49. unlink("/tmp/passone");
  50.  
  51. for(i=start; i<argc; ++i){
  52. if((p2 = fopen(argv[i], "r")) == NULL){
  53. printf("ERROR: cannot open file %s\n", argv[i]);
  54. exit(6);
  55. }
  56. while(fscanf(p2,"%d %s", &pc, instruction) != EOF){
  57. if(pc == 4096)break;
  58. new_pc = pc + pc_offset;
  59. symbol[0] = '\0';
  60. if(instruction[0] == 'U'){
  61. fscanf(p2, "%s", symbol);
  62. }
  63. fprintf(p1, " %d %s %s\n", new_pc, instruction, symbol);
  64. }
  65. while(fscanf(p2,"%s %d",symbol, &line_number) != EOF){
  66. add_symbol(symbol, line_number+pc_offset);
  67. }
  68. pc_offset = new_pc + 1;
  69. fclose(p2);
  70. }
  71.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
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
stdout
Standard output is empty