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