Update names of decode SDT constants to follow style
This commit is contained in:
parent
2402e3d268
commit
ff25680455
24
src/decode.c
24
src/decode.c
@ -100,33 +100,33 @@ a64inst_instruction *decode(word wrd) {
|
||||
// Load and Store, or unknown
|
||||
// Ignore unknown for now
|
||||
inst->type = a64inst_SINGLETRANSFER;
|
||||
inst->data.SingleTransferData.regType = getBits(wrd, SINGLE_TRANSFER_REGTYPE_FLAG_LSB, SINGLE_TRANSFER_REGTYPE_FLAG_MSB);
|
||||
inst->data.SingleTransferData.target = getBits(wrd, SINGLE_TRANSFER_TARGET_REG_LSB, SINGLE_TRANSFER_TARGET_REG_MSB);
|
||||
inst->data.SingleTransferData.regType = getBits(wrd, SDT_REGTYPE_FLAG_LSB, SDT_REGTYPE_FLAG_MSB);
|
||||
inst->data.SingleTransferData.target = getBits(wrd, SDT_TARGET_REG_LSB, SDT_TARGET_REG_MSB);
|
||||
|
||||
// TODO: Assert that the instruction is a Single Transfer indeed.
|
||||
|
||||
if(getBits(wrd, SINGLE_TRANSFER_OPTYPE_FLAG_LSB, SINGLE_TRANSFER_OPTYPE_FLAG_MSB) == a64inst_SINGLE_TRANSFER_SINGLE_DATA_TRANSFER) {
|
||||
if(getBits(wrd, SDT_OPTYPE_FLAG_LSB, SDT_OPTYPE_FLAG_MSB) == a64inst_SINGLE_TRANSFER_SINGLE_DATA_TRANSFER) {
|
||||
// Single Data Transfer
|
||||
inst->data.SingleTransferData.SingleTransferOpType = a64inst_SINGLE_TRANSFER_SINGLE_DATA_TRANSFER;
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.transferType = getBits(wrd, SINGLE_DATA_TRANSFER_TRANSFER_TYPE_LSB, SINGLE_DATA_TRANSFER_TRANSFER_TYPE_MSB);
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.base = getBits(wrd, SINGLE_DATA_TRANSFER_BASE_REG_LSB, SINGLE_DATA_TRANSFER_BASE_REG_MSB);
|
||||
if (getBits(wrd, SINGLE_DATA_TRANSFER_UNSIGNED_FLAG_LSB, SINGLE_DATA_TRANSFER_UNSIGNED_FLAG_MSB) == 1) {
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.transferType = getBits(wrd, SDT_TRANSFER_TYPE_LSB, SDT_TRANSFER_TYPE_MSB);
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.base = getBits(wrd, SDT_BASE_REG_LSB, SDT_BASE_REG_MSB);
|
||||
if (getBits(wrd, SDT_UNSIGNED_FLAG_LSB, SDT_UNSIGNED_FLAG_MSB) == 1) {
|
||||
// Unsigned offset
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode = a64inst_UNSIGNED_OFFSET;
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.unsignedOffset = getBits(wrd, SINGLE_DATA_TRANSFER_OFFSET_LSB, SINGLE_DATA_TRANSFER_OFFSET_MSB);
|
||||
} else if (getBits(wrd, SINGLE_DATA_TRANSFER_REGISTER_FLAG_LSB, SINGLE_DATA_TRANSFER_REGISTER_FLAG_MSB) == 1) {
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.unsignedOffset = getBits(wrd, SDT_OFFSET_LSB, SDT_OFFSET_MSB);
|
||||
} else if (getBits(wrd, SDT_REGISTER_FLAG_LSB, SDT_REGISTER_FLAG_MSB) == 1) {
|
||||
// Register Offset
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode = a64inst_REGISTER_OFFSET;
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.offsetReg = getBits(wrd, SINGLE_DATA_TRANSFER_REGISTER_REG_LSB, SINGLE_DATA_TRANSFER_REGISTER_REG_MSB);
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.offsetReg = getBits(wrd, SDT_REGISTER_REG_LSB, SDT_REGISTER_REG_MSB);
|
||||
} else {
|
||||
// Pre-Indexed or Post-Indexed
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode = getBits(wrd, SINGLE_DATA_TRANSFER_INDEXED_ADDRMODE_LSB, SINGLE_DATA_TRANSFER_INDEXED_ADDRMODE_MSB);
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.indexedOffset = getBits(wrd, SINGLE_DATA_TRANSFER_INDEXED_OFFSET_LSB, SINGLE_DATA_TRANSFER_INDEXED_OFFSET_MSB);
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.addressingMode = getBits(wrd, SDT_INDEXED_ADDRMODE_LSB, SDT_INDEXED_ADDRMODE_MSB);
|
||||
inst->data.SingleTransferData.processOpData.singleDataTransferData.a64inst_addressingModeData.indexedOffset = getBits(wrd, SDT_INDEXED_OFFSET_LSB, SDT_INDEXED_OFFSET_MSB);
|
||||
}
|
||||
} else {
|
||||
// Load Literal
|
||||
inst->data.SingleTransferData.SingleTransferOpType = a64inst_SINGLE_TRANSFER_LOAD_LITERAL;
|
||||
inst->data.SingleTransferData.processOpData.loadLiteralData.offset = getBits(wrd, SINGLE_DATA_TRANSFER_LOAD_LITERAL_OFFSET_LSB, SINGLE_DATA_TRANSFER_LOAD_LITERAL_OFFSET_MSB);
|
||||
inst->data.SingleTransferData.processOpData.loadLiteralData.offset = getBits(wrd, SDT_LOAD_LITERAL_OFFSET_LSB, SDT_LOAD_LITERAL_OFFSET_MSB);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
48
src/decode.h
48
src/decode.h
@ -32,31 +32,31 @@
|
||||
#define DP_IMM_WIDEMOV_IMMVAL_LSB 5
|
||||
#define DP_IMM_WIDEMOV_IMMVAL_MSB 21
|
||||
|
||||
#define SINGLE_TRANSFER_OPTYPE_FLAG_LSB 31
|
||||
#define SINGLE_TRANSFER_OPTYPE_FLAG_MSB 32
|
||||
#define SINGLE_TRANSFER_REGTYPE_FLAG_LSB 30
|
||||
#define SINGLE_TRANSFER_REGTYPE_FLAG_MSB 31
|
||||
#define SINGLE_TRANSFER_TARGET_REG_LSB 0
|
||||
#define SINGLE_TRANSFER_TARGET_REG_MSB 5
|
||||
#define SDT_OPTYPE_FLAG_LSB 31
|
||||
#define SDT_OPTYPE_FLAG_MSB 32
|
||||
#define SDT_REGTYPE_FLAG_LSB 30
|
||||
#define SDT_REGTYPE_FLAG_MSB 31
|
||||
#define SDT_TARGET_REG_LSB 0
|
||||
#define SDT_TARGET_REG_MSB 5
|
||||
|
||||
#define SINGLE_DATA_TRANSFER_BASE_REG_LSB 5
|
||||
#define SINGLE_DATA_TRANSFER_BASE_REG_MSB 10
|
||||
#define SINGLE_DATA_TRANSFER_OFFSET_LSB 10
|
||||
#define SINGLE_DATA_TRANSFER_OFFSET_MSB 22
|
||||
#define SINGLE_DATA_TRANSFER_TRANSFER_TYPE_LSB 22
|
||||
#define SINGLE_DATA_TRANSFER_TRANSFER_TYPE_MSB 23
|
||||
#define SINGLE_DATA_TRANSFER_UNSIGNED_FLAG_LSB 24
|
||||
#define SINGLE_DATA_TRANSFER_UNSIGNED_FLAG_MSB 25
|
||||
#define SINGLE_DATA_TRANSFER_REGISTER_FLAG_LSB 21
|
||||
#define SINGLE_DATA_TRANSFER_REGISTER_FLAG_MSB 22
|
||||
#define SINGLE_DATA_TRANSFER_REGISTER_REG_LSB 16
|
||||
#define SINGLE_DATA_TRANSFER_REGISTER_REG_MSB 21
|
||||
#define SINGLE_DATA_TRANSFER_INDEXED_ADDRMODE_LSB 11
|
||||
#define SINGLE_DATA_TRANSFER_INDEXED_ADDRMODE_MSB 12
|
||||
#define SINGLE_DATA_TRANSFER_INDEXED_OFFSET_LSB 12
|
||||
#define SINGLE_DATA_TRANSFER_INDEXED_OFFSET_MSB 21
|
||||
#define SINGLE_DATA_TRANSFER_LOAD_LITERAL_OFFSET_LSB 5
|
||||
#define SINGLE_DATA_TRANSFER_LOAD_LITERAL_OFFSET_MSB 24
|
||||
#define SDT_BASE_REG_LSB 5
|
||||
#define SDT_BASE_REG_MSB 10
|
||||
#define SDT_OFFSET_LSB 10
|
||||
#define SDT_OFFSET_MSB 22
|
||||
#define SDT_TRANSFER_TYPE_LSB 22
|
||||
#define SDT_TRANSFER_TYPE_MSB 23
|
||||
#define SDT_UNSIGNED_FLAG_LSB 24
|
||||
#define SDT_UNSIGNED_FLAG_MSB 25
|
||||
#define SDT_REGISTER_FLAG_LSB 21
|
||||
#define SDT_REGISTER_FLAG_MSB 22
|
||||
#define SDT_REGISTER_REG_LSB 16
|
||||
#define SDT_REGISTER_REG_MSB 21
|
||||
#define SDT_INDEXED_ADDRMODE_LSB 11
|
||||
#define SDT_INDEXED_ADDRMODE_MSB 12
|
||||
#define SDT_INDEXED_OFFSET_LSB 12
|
||||
#define SDT_INDEXED_OFFSET_MSB 21
|
||||
#define SDT_LOAD_LITERAL_OFFSET_LSB 5
|
||||
#define SDT_LOAD_LITERAL_OFFSET_MSB 24
|
||||
|
||||
#define BRANCH_TYPE_LSB 30
|
||||
#define BRANCH_TYPE_MSB 32
|
||||
|
||||
Loading…
Reference in New Issue
Block a user