1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-04 18:29:40 +00:00

Fully handle rm = 6, mod = 0.

This commit is contained in:
Thomas Harte 2023-09-15 22:08:20 -04:00
parent 7ee5adc481
commit f039d44ee3

View File

@ -640,6 +640,10 @@ std::pair<int, typename Decoder<model>::InstructionT> Decoder<model>::decode(con
operation_ == Operation::LFS) {
undefined();
}
} else if(rm == 6 && mod == 0) {
// There's no BP direct; BP with ostensibly no offset means 'direct address' mode.
displacement_size_ = data_size(address_size_);
memreg = Source::DirectAddress;
} else {
const DataSize sizes[] = {
DataSize::None,
@ -670,11 +674,6 @@ std::pair<int, typename Decoder<model>::InstructionT> Decoder<model>::decode(con
};
sib_ = rm_table[rm];
// BP always gets a displacement.
if(rm == 6 && displacement_size_ == DataSize::None) {
displacement_size_ = DataSize::Word;
}
}
}