diff --git a/src/parser.c b/src/parser.c index 97eef8d..75df4a9 100644 --- a/src/parser.c +++ b/src/parser.c @@ -176,6 +176,25 @@ void classifyOpcode(char* opcode, a64inst_instruction *instr, char *operandList[ instr->type = a64inst_DPREGISTER; } else { instr->type = a64inst_DPIMMEDIATE; + a64inst_DPImmediateData data = instr->data.DPImmediateData; + char t = operandList[0][0]; + char *immOffset = NULL; + immOffset = strcpy(immOffset, operandList[0]); + immOffset++; + char *endptr = NULL; + int reg = strtol(immOffset, &endptr, 10); + data.dest=reg; + if (t == 'w') { + data.regType=0; + } + else { + data.regType=1; + } + // add + if (opcode[1] == 'd') { + data.DPIOpType = 0; + + } } }