Pass 2
Pass 2
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX_LINE_LEN 50
#define MAX_SYMBOLS 20
typedef struct {
char label[20];
int address;
} Symbol;
Symbol symbolTable[MAX_SYMBOLS];
int symbolCount = 0;
Opcode opcodeTable[] = {
{"LDA", "00"}, {"STA", "0C"}, {"STL", "14"},
{"COMP", "28"}, {"JEQ", "30"}, {"J", "3C"},
{"JSUB", "48"}
};
int opcodeCount = 7;
fclose(file);
}
int main() {
FILE *intermediateFile = fopen("program.sic", "r");
FILE *objectFile = fopen("object.txt", "w");
if (!intermediateFile || !objectFile) {
printf("Error: Could not open one of the files.\n");
return 1;
}
if (strlen(objCode) > 0) {
if (textLength + strlen(objCode) / 2 > 30) {
fprintf(objectFile, "T%06X%02X%s\n", textStart, textLength, textRecord);
textStart = address;
strcpy(textRecord, objCode);
textLength = strlen(objCode) / 2;
} else {
strcat(textRecord, objCode);
textLength += strlen(objCode) / 2;
}
}
}
// End record
fprintf(objectFile, "E%06X\n", startAddress);
fclose(intermediateFile);
fclose(objectFile);
return 0;
}
INPUT:
OUTPUT:
user@user-Latitude-E5450:~/Desktop/S5/LAB/MM/sic$ gcc pass2.c
user@user-Latitude-E5450:~/Desktop/S5/LAB/MM/sic$ ./a.out
Object file generated successfully.