diff options
author | iximeow <me@iximeow.net> | 2021-08-13 23:44:28 -0700 |
---|---|---|
committer | iximeow <me@iximeow.net> | 2021-08-21 19:08:40 -0700 |
commit | a07098315bea8b880688831f931bc5213ebb6a5f (patch) | |
tree | 67b134241aefde7919091c51e97bbc6b0f6c62b1 /src/shared/evex.in | |
parent | 9cb6967f484553d78f75113ad534a34960184db8 (diff) |
extend annotation reporting to 32- and 16-bit modes, kinda
Diffstat (limited to 'src/shared/evex.in')
-rw-r--r-- | src/shared/evex.in | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/shared/evex.in b/src/shared/evex.in index 8a1e4eb..2f1cbe5 100644 --- a/src/shared/evex.in +++ b/src/shared/evex.in @@ -1,11 +1,17 @@ use super::OperandSpec; +use super::FieldDescription; + +use yaxpeax_arch::DescriptionSink; // `evex_byte_one` is an option because the caller *may* have already read it, // but may have not. `long_mode` can decide immediately that `0x62` should be read // as an `EVEX` instruction, but for other modes we can only make this // determination when reading a `bound`'s `modrm` byte. #[inline(never)] -pub(crate) fn read_evex<T: Reader<<Arch as yaxpeax_arch::Arch>::Address, <Arch as yaxpeax_arch::Arch>::Word>>(words: &mut T, instruction: &mut Instruction, evex_byte_one: Option<u8>) -> Result<(), DecodeError> { +pub(crate) fn read_evex< + T: Reader<<Arch as yaxpeax_arch::Arch>::Address, <Arch as yaxpeax_arch::Arch>::Word>, + S: DescriptionSink<FieldDescription>, +>(words: &mut T, instruction: &mut Instruction, evex_byte_one: Option<u8>, sink: &mut S) -> Result<(), DecodeError> { let evex_byte_one = if let Some(b) = evex_byte_one { b } else { |