diff options
| -rw-r--r-- | src/long_mode/display.rs | 42 | 
1 files changed, 24 insertions, 18 deletions
| diff --git a/src/long_mode/display.rs b/src/long_mode/display.rs index 24d35be..355cbc7 100644 --- a/src/long_mode/display.rs +++ b/src/long_mode/display.rs @@ -1433,17 +1433,18 @@ impl <T: DisplaySink> crate::long_mode::OperandVisitor for ColorizingOperandVisi      }      fn visit_disp(&mut self, reg: RegSpec, disp: i32) -> Result<Self::Ok, Self::Error> {          unsafe { self.f.write_lt_8(MEM_SIZE_STRINGS.get_kinda_unchecked(self.instr.mem_size as usize))? }; -        self.f.write_fixed_size(" ")?;          if self.op_nr >= 4 {              unsafe { core::hint::unreachable_unchecked(); }          }          if let Some(prefix) = self.instr.segment_override_for_op(self.op_nr) {              let name = prefix.name(); +            self.f.write_char(' ')?;              self.f.write_char(name[0] as char)?;              self.f.write_char(name[1] as char)?; -            self.f.write_char(':')?; +            self.f.write_fixed_size(":[")?; +        } else { +            self.f.write_fixed_size(" [")?;          } -        self.f.write_fixed_size("[")?;          unsafe { self.f.write_lt_8(regspec_label(®))?; }          self.f.write_fixed_size(" ")?; @@ -1461,33 +1462,35 @@ impl <T: DisplaySink> crate::long_mode::OperandVisitor for ColorizingOperandVisi      }      fn visit_deref(&mut self, reg: RegSpec) -> Result<Self::Ok, Self::Error> {          unsafe { self.f.write_lt_8(MEM_SIZE_STRINGS.get_kinda_unchecked(self.instr.mem_size as usize))? }; -        self.f.write_fixed_size(" ")?;          if self.op_nr >= 4 {              unsafe { core::hint::unreachable_unchecked(); }          }          if let Some(prefix) = self.instr.segment_override_for_op(self.op_nr) {              let name = prefix.name(); +            self.f.write_char(' ')?;              self.f.write_char(name[0] as char)?;              self.f.write_char(name[1] as char)?; -            self.f.write_char(':')?; +            self.f.write_fixed_size(":[")?; +        } else { +            self.f.write_fixed_size(" [")?;          } -        self.f.write_fixed_size("[")?;          unsafe { self.f.write_lt_8(regspec_label(®))?; }          self.f.write_fixed_size("]")      }      fn visit_reg_scale(&mut self, reg: RegSpec, scale: u8) -> Result<Self::Ok, Self::Error> {          unsafe { self.f.write_lt_8(MEM_SIZE_STRINGS.get_kinda_unchecked(self.instr.mem_size as usize))? }; -        self.f.write_fixed_size(" ")?;          if self.op_nr >= 4 {              unsafe { core::hint::unreachable_unchecked(); }          }          if let Some(prefix) = self.instr.segment_override_for_op(self.op_nr) {              let name = prefix.name(); +            self.f.write_char(' ')?;              self.f.write_char(name[0] as char)?;              self.f.write_char(name[1] as char)?; -            self.f.write_char(':')?; +            self.f.write_fixed_size(":[")?; +        } else { +            self.f.write_fixed_size(" [")?;          } -        self.f.write_fixed_size("[")?;          unsafe { self.f.write_lt_8(regspec_label(®))?; }          self.f.write_fixed_size(" * ")?;          self.f.write_char((0x30 + scale) as char)?; // translate scale=1 to '1', scale=2 to '2', etc @@ -1497,17 +1500,18 @@ impl <T: DisplaySink> crate::long_mode::OperandVisitor for ColorizingOperandVisi      }      fn visit_reg_scale_disp(&mut self, reg: RegSpec, scale: u8, disp: i32) -> Result<Self::Ok, Self::Error> {          unsafe { self.f.write_lt_8(MEM_SIZE_STRINGS.get_kinda_unchecked(self.instr.mem_size as usize))? }; -        self.f.write_fixed_size(" ")?;          if self.op_nr >= 4 {              unsafe { core::hint::unreachable_unchecked(); }          }          if let Some(prefix) = self.instr.segment_override_for_op(self.op_nr) {              let name = prefix.name(); +            self.f.write_char(' ')?;              self.f.write_char(name[0] as char)?;              self.f.write_char(name[1] as char)?; -            self.f.write_char(':')?; +            self.f.write_fixed_size(":[")?; +        } else { +            self.f.write_fixed_size(" [")?;          } -        self.f.write_fixed_size("[")?;          unsafe { self.f.write_lt_8(regspec_label(®))?; }          self.f.write_fixed_size(" * ")?;          self.f.write_char((0x30 + scale) as char)?; // translate scale=1 to '1', scale=2 to '2', etc @@ -1527,17 +1531,18 @@ impl <T: DisplaySink> crate::long_mode::OperandVisitor for ColorizingOperandVisi      }      fn visit_index_base_scale(&mut self, base: RegSpec, index: RegSpec, scale: u8) -> Result<Self::Ok, Self::Error> {          unsafe { self.f.write_lt_8(MEM_SIZE_STRINGS.get_kinda_unchecked(self.instr.mem_size as usize))? }; -        self.f.write_fixed_size(" ")?;          if self.op_nr >= 4 {              unsafe { core::hint::unreachable_unchecked(); }          }          if let Some(prefix) = self.instr.segment_override_for_op(self.op_nr) {              let name = prefix.name(); +            self.f.write_char(' ')?;              self.f.write_char(name[0] as char)?;              self.f.write_char(name[1] as char)?; -            self.f.write_char(':')?; +            self.f.write_fixed_size(":[")?; +        } else { +            self.f.write_fixed_size(" [")?;          } -        self.f.write_fixed_size("[")?;          unsafe { self.f.write_lt_8(regspec_label(&base))?; }          self.f.write_fixed_size(" + ")?;          unsafe { self.f.write_lt_8(regspec_label(&index))?; } @@ -1547,17 +1552,18 @@ impl <T: DisplaySink> crate::long_mode::OperandVisitor for ColorizingOperandVisi      }      fn visit_index_base_scale_disp(&mut self, base: RegSpec, index: RegSpec, scale: u8, disp: i32) -> Result<Self::Ok, Self::Error> {          unsafe { self.f.write_lt_8(MEM_SIZE_STRINGS.get_kinda_unchecked(self.instr.mem_size as usize))? }; -        self.f.write_fixed_size(" ")?;          if self.op_nr >= 4 {              unsafe { core::hint::unreachable_unchecked(); }          }          if let Some(prefix) = self.instr.segment_override_for_op(self.op_nr) {              let name = prefix.name(); +            self.f.write_char(' ')?;              self.f.write_char(name[0] as char)?;              self.f.write_char(name[1] as char)?; -            self.f.write_char(':')?; +            self.f.write_fixed_size(":[")?; +        } else { +            self.f.write_fixed_size(" [")?;          } -        self.f.write_fixed_size("[")?;          unsafe { self.f.write_lt_8(regspec_label(&base))?; }          self.f.write_fixed_size(" + ")?;          unsafe { self.f.write_lt_8(regspec_label(&index))?; } | 
