Update names of decode SDT constants to follow style

This commit is contained in:
Themis Demetriades 2024-06-05 14:00:49 +01:00
parent 2402e3d268
commit ff25680455
2 changed files with 36 additions and 36 deletions

View File

@ -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);
}
}

View File

@ -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