From 9c6b1d9057148791a713291b596516e8156b8a69 Mon Sep 17 00:00:00 2001 From: Garritt McCune Date: Tue, 28 Dec 2021 20:48:09 +0000 Subject: [PATCH] Added very simple parsing logic. --- assm | Bin 16432 -> 0 bytes src/main.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 56 insertions(+), 1 deletion(-) delete mode 100755 assm diff --git a/assm b/assm deleted file mode 100755 index 3f39161f8531c202be3bd48145e5fed441c1c9f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16432 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 #include +#include + +typedef struct opcode { + char op[255]; + char param1[255]; + char param2[255]; +} Opcode; void print_file(char*); +Opcode* get_opcode(char*); int main(int argc, char* args[]) { const char *input_files[argc - 1]; @@ -33,7 +41,21 @@ void print_file(char* file_path) { } while((bytes_read = getline(&line, &len, file)) != -1) { - printf("%s", line); + //printf("%s", line); + + unsigned short int count = 0; + char* c; + char* opcode; + char* param1; + char* param2; + + //for(c = line; *c != '\0'; c++) { + Opcode* op = get_opcode(line); + //} + //printf("\n"); + if (strcmp(op->op, "NA") == 0) continue; + + printf("%s %s, %s\n", op->op, op->param1, op->param2); } printf("\n"); @@ -41,4 +63,37 @@ void print_file(char* file_path) { fclose(file); if (line) free(line); +} + +Opcode* get_opcode(char* line) { + Opcode *op = malloc(sizeof(Opcode)); + strcpy(op->op, "NA"); + + if (strlen(line) == 0 ) return op; + if (line[0] == ';') return op; + + int i = 0; + int count = 0; + + for (char* c = line; *c != '\0'; c++) { + if (*c == ';') break; + if (*c == ' ') { + i = 0; + count++; + continue; + } + + if (*c == ',') { + i = 0; + continue; + } + + if (count == 0) op->op[i] = *c; + else if (count == 1) op->param1[i] = *c; + else if (count == 2) op->param2[i] = *c; + + i++; + } + + return op; } \ No newline at end of file