Skip to content

v1.11.0

Compare
Choose a tag to compare
@wtfsck wtfsck released this 22 Mar 11:39
· 1400 commits to master since this release
  • Added Intel FRED and LKGS instructions
  • Decoder and formatter perf improvements (Rust, see below)
  • Instruction's memory displacement is now 64 bits (was 32 bits). This solves a couple of issues and will make creating RIP-relative memory operands much easier.
    • Use MemoryDisplacement{32,64}/memory_displacement{32,64}() (deprecated old 32-bit members: MemoryDisplacement/memory_displacement())
    • If it's an EIP/RIP relative memory operand, MemoryDisplacement64/memory_displacement64() is now the absolute address (used to be an RIP-relative displacement)
    • OpKind.Memory64 is deprecated since it's not used by iced (use OpKind.Memory instead)
    • MemoryOperand's displacement argument is now an i64 (used to be an i32)
  • Added Decoder::with_ip()/Decoder.Create() with an extra ip argument (Rust/.NET/Python)

Rust

  • FastFormatter perf improvements:
    • The new generic SpecializedFormatter<TraitOptions> is 2x faster than the old FastFormatter code. see here
    • FastFormatter is now type FastFormatter = SpecializedFormatter<T> (no breaking changes)
  • Decoder perf improvements see here
  • MSRV is now 1.41.0 (one year old Rust)
  • Deprecated a few methods that could panic that I missed last time and added try_*() methods that return a Result<T, E>
  • Added Register::values() (Credit: @tnballo) that returns an iterator that returns all enum values. Same associated method was also added to the other public enums.
  • All enums now implement TryFrom<usize>
  • Added Instruction::op_kinds() which returns all (0-5) OpKind values