add, adds, cmn
This commit is contained in:
parent
28b38f4a80
commit
3290896f6e
25
src/parser.c
25
src/parser.c
@ -178,11 +178,7 @@ void classifyOpcode(char* opcode, a64inst_instruction *instr, char *operandList[
|
||||
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);
|
||||
int reg = getOperandNumber(operandList[0]);
|
||||
data.dest=reg;
|
||||
if (t == 'w') {
|
||||
data.regType=0;
|
||||
@ -190,10 +186,25 @@ void classifyOpcode(char* opcode, a64inst_instruction *instr, char *operandList[
|
||||
else {
|
||||
data.regType=1;
|
||||
}
|
||||
// add
|
||||
// add, adds
|
||||
if (opcode[1] == 'd') {
|
||||
data.DPIOpType = 0;
|
||||
|
||||
data.processOpData.arithmData.src = getOperandNumber(operandList[1]);
|
||||
data.processOpData.arithmData.immediate = getOperandNumber(operandList[2]);
|
||||
if (opcode[-1] == 's') {
|
||||
data.processOpData.arithmData.shiftImmediate = true;
|
||||
|
||||
}
|
||||
else {
|
||||
data.processOpData.arithmData.shiftImmediate = false;
|
||||
}
|
||||
}
|
||||
// cmn
|
||||
else if (opcode == "cmn") {
|
||||
data.DPIOpType = 0;
|
||||
data.processOpData.arithmData.src = ZERO_REGISTER;
|
||||
data.processOpData.arithmData.immediate = getOperandNumber(operandList[1]);
|
||||
data.processOpData.arithmData.shiftImmediate = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user