rewrite address format calculation

as { is not in the actual asm syntax
This commit is contained in:
EDiasAlberto 2024-06-06 14:46:16 +01:00
parent 70e02768b6
commit f1ac860d6a

View File

@ -16,22 +16,19 @@
//calculate offsets from string
void calcluateAddressFormat(a64inst_instruction *instr, char *operandList[]){
if(strcmp(operandList[0][strlen(operandList[0])-1], "{") == 0) {
//unsigned immediate offset
instr->data.processOpData.addressingMode = a64inst_UNSIGNED_OFFSET;
if(strcmp(operandList[1][strlen(operandList[1])-1], "!")==0){
instr->data.processOpData.addressingMode = a64inst_PRE_INDEXED;
} else if(strcmp(operandList[0][strlen(operandList[0])-1], "]") == 0) {
//post-indexed
instr->data.processOpData.addressingMode = a64inst_POST_INDEXED;
} else if( (strcmp(operandList[1][strlen(operandList[1])-1], "x") == 0)
|| (strcmp(operandList[1][strlen(operandList[1])-1], "w") == 0)){
//register
instr->data.processOpData.addressingMode = a64inst_REGISTER_OFFSET;
} else {
//check second operand to distinguish between pre-indexed and register
if(strcmp(operandList[1][0], "#")==0){
//pre-indexed
instr->data.processOpData.addressingMode = a64inst_PRE_INDEXED;
} else {
//register
instr->data.processOpData.addressingMode = a64inst_REGISTER_OFFSET;
}
}
instr->data.processOpData.addressingMode = a64inst_UNSIGNED_OFFSET;
}
}
void generateLoadStoreOperands(a64inst_instruction *instr, char *opcode, char *operandList[]){