#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N_LINES 2048
#define SIZE_LINE_CH 64
#define E_FILE_NOT_OPEN -1
#define E_NO_MEM -2
#define E_STR_FILE_NOT_OPEN "Can't open file"
#define E_STR_NO_MEM "No Memory"
int main (int argc, char *argv[]) {
FILE *fp;
char opcode[SIZE_LINE_CH];
size_t n;
size_t i;
char op1 [SIZE_LINE_CH];
char op2 [SIZE_LINE_CH];
char op3 [SIZE_LINE_CH];
char op1des [SIZE_LINE_CH];
char op2des [SIZE_LINE_CH];
char op3des [SIZE_LINE_CH];
if ((fp = fopen (argv[1], "r")) == NULL) {
perror (E_STR_FILE_NOT_OPEN);
return E_FILE_NOT_OPEN;
}
while (!feof(fp)) {
fscanf (fp, "%s", opcode);
if (strcmp (opcode, "add") == 0) {
fscanf (fp, "%s", op1);
fscanf (fp, "%s", op2);
fscanf (fp, "%s", op3);
strcpy (op1des, op1+1);
*(op1des + strlen (op1des) - 1) = 0;
printf ("clr %s\n", op1des);
if (op2[0] == '_') {
strcpy (op2des, op2+1);
*(op2des + strlen (op2des) - 1) = 0;
printf ("add %s %s\n", op1des, op2des);
}
else if ((op2[0] >= '0') && (op2[0] <= '9')) {
strcpy (op2des, op2);
*(op2des + strlen (op2des) - 1) = 0;
printf ("add %s %s\n", op1des, op2des);
}
if (op3[0] == '_') {
strcpy (op3des, op3+1);
printf ("add %s %s\n", op1des, op3des);
}
else if ((op3[0] >= '0') && (op3[0] <= '9')) {
strcpy (op3des, op3);
*(op3des + strlen (op3des) - 1) = 0;
printf ("add %s %s\n", op1des, op3des);
}
//printf ("%s %s %s %s\n", opcode, op1des, op2, op3);
}
//else if (strcmp (buf, "mov") == 0)
}
fclose (fp);
return 0;
}