From 0f04ac9e2271e3983d50573172ae2c1cd5a78475 Mon Sep 17 00:00:00 2001 From: EDiasAlberto Date: Tue, 4 Jun 2024 14:53:30 +0100 Subject: [PATCH] rename fileaccess --- src/{fileaccess.c => fileio.c} | 1 + src/parser.c | 10 +++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) rename src/{fileaccess.c => fileio.c} (96%) diff --git a/src/fileaccess.c b/src/fileio.c similarity index 96% rename from src/fileaccess.c rename to src/fileio.c index 14bf70d..45b25e8 100644 --- a/src/fileaccess.c +++ b/src/fileio.c @@ -37,6 +37,7 @@ int writeBinaryFile(word instrs[], char outputFile[]){ //reads assembly file of "inputFile" name, and passes //each line into a parser +//TODO: allocate whole file in memory, line-by-line int readAssemblyFile(char inputFile[]) { if (!isValidFileFormat(filename, "s")){ exit(EXIT_FAILURE); diff --git a/src/parser.c b/src/parser.c index 1c30fc3..9f5f526 100644 --- a/src/parser.c +++ b/src/parser.c @@ -14,7 +14,10 @@ // - count operands and match type/values // - generate final a64inst and return -char *tokeniseOperands(char* str, int operandCount, char *operands[]){ +//takes string of operands, and reference to operandcounter +//takes input of result array +//outputs array of operands +void tokeniseOperands(char* str, int operandCount, char *operands[]){ char *operandsDupe = strdup(str); int operandCount = 0; char *operand = strtok(operandsDupe, OPERAND_DELIMITER); @@ -25,10 +28,10 @@ char *tokeniseOperands(char* str, int operandCount, char *operands[]){ operand = strtok(NULL, OPERAND_DELIMITER); operands[operandCount] = operand; } - return(operands); - } +//takes inputted assembly line and returns a +//pointer to an abstract representation of the instruction a64inst_instruction *parser(char asmLine[]){ a64inst_instruction *instr = malloc(sizeof(a64inst_instruction)); if (instr == NULL){ @@ -36,6 +39,7 @@ a64inst_instruction *parser(char asmLine[]){ } //"opcode operand1, {operand2}, ..." + //duplicated as strtok modifies the input string char *stringptr = strdup(asmLine); char *opcode = strtok(stringptr, " ");