fix struct access

This commit is contained in:
EDiasAlberto 2024-06-06 14:30:13 +01:00
parent 872d4224f8
commit 70e02768b6

View File

@ -44,7 +44,7 @@ void generateLoadStoreOperands(a64inst_instruction *instr, char *opcode, char *o
instr->data.regType = 0; instr->data.regType = 0;
} }
char *endptr; char *endptr;
instr->processOpData.base = strtol(operandList[0][0]+1, endptr, 2); instr->data.target = strtol(operandList[0][0]+1, endptr, 2);
calcluateAddressFormat(instr, operandList); calcluateAddressFormat(instr, operandList);
break; break;
case a64inst_LOADLITERAL: case a64inst_LOADLITERAL:
@ -61,25 +61,25 @@ void generateBranchOperands(a64inst_instruction *instr, char* opcode, char *oper
break; break;
case a64inst_REGISTER: case a64inst_REGISTER:
char *endptr; char *endptr;
instr->data.BranchData.processOpData.src = strtol(operandList[0] + 1, endptr, 2) instr->data.processOpData.src = strtol(operandList[0] + 1, endptr, 2)
break; break;
case a64inst_CONDITIONAL: case a64inst_CONDITIONAL:
char* condition = strtok(strdup(opcode), "b."); char* condition = strtok(strdup(opcode), "b.");
condition = strtok(NULL, ""); condition = strtok(NULL, "");
if(strcmp(condition, "eq")==0){ if(strcmp(condition, "eq")==0){
instr->data.BranchData.processOpData.cond = EQ; instr->data.processOpData.cond = EQ;
} else if (strcmp(condition, "ne")==0){ } else if (strcmp(condition, "ne")==0){
instr->data.BranchData.processOpData.cond = NE; instr->data.processOpData.cond = NE;
} else if (strcmp(condition, "ge")==0){ } else if (strcmp(condition, "ge")==0){
instr->data.BranchData.processOpData.cond = GE; instr->data.processOpData.cond = GE;
} else if (strcmp(condition, "lt")==0){ } else if (strcmp(condition, "lt")==0){
instr->data.BranchData.processOpData.cond = LT; instr->data.processOpData.cond = LT;
} else if (strcmp(condition, "gt")==0){ } else if (strcmp(condition, "gt")==0){
instr->data.BranchData.processOpData.cond = GT; instr->data.processOpData.cond = GT;
} else if (strcmp(condition, "le")==0){ } else if (strcmp(condition, "le")==0){
instr->data.BranchData.processOpData.cond = LE; instr->data.processOpData.cond = LE;
} else if (srtcmp(condition, "al")==0){ } else if (srtcmp(condition, "al")==0){
instr->data.BranchData.processOpData.cond = AL; instr->data.processOpData.cond = AL;
} }
break; break;
//calculate offset from symbol table. //calculate offset from symbol table.