[DynInst_API:] [dyninst/dyninst] da2033: Decode implicit memory operands


Date: Wed, 03 Dec 2025 09:30:09 -0800
From: Tim Haines <noreply@xxxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] da2033: Decode implicit memory operands
  Branch: refs/heads/thaines/capstone_integration
  Home:   https://github.com/dyninst/dyninst
  Commit: da2033672444a82ecec91dfa907c7a07cf893c20
      https://github.com/dyninst/dyninst/commit/da2033672444a82ecec91dfa907c7a07cf893c20
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/src/x86/decode_implicit.C

  Log Message:
  -----------
  Decode implicit memory operands

Capstone doesn't track these at all. The additional memory op for push
instructions was taken directly from Operation::setupNonOperandData.


  Commit: 538d44d39161b6a0af93fc700ed234bcdf83b812
      https://github.com/dyninst/dyninst/commit/538d44d39161b6a0af93fc700ed234bcdf83b812
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/src/x86/decode_implicit.C

  Log Message:
  -----------
  Decode implicit flags for interrupt instructions

Capstone doesn't fully track eflags for interrupt instructions.


  Commit: 7e2a15a946a1dad4712ddc02101ada4535c01ee3
      https://github.com/dyninst/dyninst/commit/7e2a15a946a1dad4712ddc02101ada4535c01ee3
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/src/syscalls.C

  Log Message:
  -----------
  Update syscalls to handle corrected AST

The new x86 instruction decoder correctly creates AST for the cases like
`call gs:[0x10]` to be the same as for `call [Base + 0x10]`. Moreover,
the new decoder handles generic segment-based addressing allowed in
64-bit mode like `call [Seg + Base + (Index * Scale) + Disp]` which is
not a system call.


  Commit: fb7936e72a2ceb0248658f1d67ed8e895c682e9b
      https://github.com/dyninst/dyninst/commit/fb7936e72a2ceb0248658f1d67ed8e895c682e9b
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M common/CMakeLists.txt
    M tests/unit/common/registers/CMakeLists.txt
    A tests/unit/common/registers/register_set.cpp

  Log Message:
  -----------
  Add register_set

This is a collection of MachRegisters with set operations but without
any ordering constraints.


  Commit: d9a6e900e1e781fcac63af9ceaf7fb479551d3b9
      https://github.com/dyninst/dyninst/commit/d9a6e900e1e781fcac63af9ceaf7fb479551d3b9
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M tests/cft_tests.cpp

  Log Message:
  -----------
  Add 'isConditional' test in cft tests


  Commit: 19205b8e6ea08b5b052be89f42ec056194d7702f
      https://github.com/dyninst/dyninst/commit/19205b8e6ea08b5b052be89f42ec056194d7702f
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M tests/integration/InstructionAPI/decoder/x86/CMakeLists.txt
    A tests/integration/InstructionAPI/decoder/x86/arithmetic.cpp

  Log Message:
  -----------
  arithmetic tests


  Commit: 5807291c4e0c113263563e9440f69c9ad7910d1f
      https://github.com/dyninst/dyninst/commit/5807291c4e0c113263563e9440f69c9ad7910d1f
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M tests/integration/InstructionAPI/decoder/x86/CMakeLists.txt
    A tests/integration/InstructionAPI/decoder/x86/branches.cpp

  Log Message:
  -----------
  branches tests


  Commit: 34f3fecf4a1e5045a61c5b93cdf4596b68dd9cd9
      https://github.com/dyninst/dyninst/commit/34f3fecf4a1e5045a61c5b93cdf4596b68dd9cd9
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M tests/integration/InstructionAPI/decoder/x86/call.cpp

  Log Message:
  -----------
  call tests


  Commit: 76ae07cb311e760d916445fe68dc7c16cb300be9
      https://github.com/dyninst/dyninst/commit/76ae07cb311e760d916445fe68dc7c16cb300be9
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M tests/integration/InstructionAPI/decoder/x86/CMakeLists.txt
    A tests/integration/InstructionAPI/decoder/x86/data_transfer.cpp

  Log Message:
  -----------
  data transfer tests


  Commit: 6e4ba3ad75d5a35d8419ce9439b649e08902504b
      https://github.com/dyninst/dyninst/commit/6e4ba3ad75d5a35d8419ce9439b649e08902504b
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M tests/integration/InstructionAPI/decoder/x86/CMakeLists.txt
    A tests/integration/InstructionAPI/decoder/x86/sse.cpp

  Log Message:
  -----------
  sse tests


  Commit: ab046addbc814652823ed3e760d989a18bba9da9
      https://github.com/dyninst/dyninst/commit/ab046addbc814652823ed3e760d989a18bba9da9
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M tests/integration/InstructionAPI/decoder/x86/CMakeLists.txt
    A tests/integration/InstructionAPI/decoder/x86/strings.cpp

  Log Message:
  -----------
  string tests


  Commit: 60a5c00abea2b0b30db21810f4b3ce7c718d6230
      https://github.com/dyninst/dyninst/commit/60a5c00abea2b0b30db21810f4b3ce7c718d6230
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M tests/integration/InstructionAPI/decoder/x86/CMakeLists.txt
    A tests/integration/InstructionAPI/decoder/x86/stack.cpp

  Log Message:
  -----------
  stack tests


  Commit: be63d620cb30792200ed4135168d2e008c7133a8
      https://github.com/dyninst/dyninst/commit/be63d620cb30792200ed4135168d2e008c7133a8
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M tests/integration/InstructionAPI/decoder/x86/CMakeLists.txt
    A tests/integration/InstructionAPI/decoder/x86/sysctl.cpp

  Log Message:
  -----------
  sysctl tests


  Commit: 49eb0e750a887fa8e9678fe329264757d235166a
      https://github.com/dyninst/dyninst/commit/49eb0e750a887fa8e9678fe329264757d235166a
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M tests/integration/InstructionAPI/decoder/x86/CMakeLists.txt
    A tests/integration/InstructionAPI/decoder/x86/x87.cpp

  Log Message:
  -----------
  x87 tests


  Commit: ca37c7bd20c7e5abe33a367ba0e85d3f12ec5832
      https://github.com/dyninst/dyninst/commit/ca37c7bd20c7e5abe33a367ba0e85d3f12ec5832
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/h/Operation_impl.h
    M instructionAPI/src/Operation.C

  Log Message:
  -----------
  Remove Operation::SetUpNonOperandData

All implicit operands are now accounted for in the decoder.


  Commit: 1f911d5d4fbbdaae378bdde124d539aa0b20dedd
      https://github.com/dyninst/dyninst/commit/1f911d5d4fbbdaae378bdde124d539aa0b20dedd
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/doc/API/Operation.tex
    M instructionAPI/h/Operation_impl.h
    M instructionAPI/src/Instruction.C
    M instructionAPI/src/Operation.C

  Log Message:
  -----------
  Remove Operation::is{Read,Written}

All implicit operands are now accounted for in the decoder.


  Commit: 93300d09713bbdacd7a06f65e07f58f274afe521
      https://github.com/dyninst/dyninst/commit/93300d09713bbdacd7a06f65e07f58f274afe521
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/doc/API/Operation.tex
    M instructionAPI/h/Operation_impl.h
    M instructionAPI/src/Instruction.C
    M instructionAPI/src/Operation.C

  Log Message:
  -----------
  Remove Operation::implicit{Reads,Writes}

All implicit operands are now accounted for in the decoder.


  Commit: 2981832eeb7d6a6bfb1ed643543c01e7b050a18c
      https://github.com/dyninst/dyninst/commit/2981832eeb7d6a6bfb1ed643543c01e7b050a18c
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/doc/API/Operation.tex
    M instructionAPI/h/Operation_impl.h
    M instructionAPI/src/Instruction.C
    M instructionAPI/src/Operation.C

  Log Message:
  -----------
  Remove Operation::getImplicitMem{Reads,Writes}

All implicit operands are now accounted for in the decoder.


  Commit: 2b47b638ca7b9f8f80df20e63fb673655eeb2ea7
      https://github.com/dyninst/dyninst/commit/2b47b638ca7b9f8f80df20e63fb673655eeb2ea7
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/h/Operation_impl.h
    M instructionAPI/src/Operation.C

  Log Message:
  -----------
  Remove unused Operation::addrWidth


  Commit: be8c1948c30595a7daf209acb0a95402a3c7f103
      https://github.com/dyninst/dyninst/commit/be8c1948c30595a7daf209acb0a95402a3c7f103
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/h/Operation_impl.h
    M instructionAPI/src/Operation.C

  Log Message:
  -----------
  Remove Operation SMFs

Now that the std::once_flag has been removed, the special member
functions (SMFs) are no longer needed. The compiler-generated ones
will work correctly.


  Commit: e4df71ec35bb37c4b8327df5b466e334eeb96cdb
      https://github.com/dyninst/dyninst/commit/e4df71ec35bb37c4b8327df5b466e334eeb96cdb
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/h/Operation_impl.h

  Log Message:
  -----------
  Remove unused includes in Operation_impl.h


  Commit: 146f8a0f1dad9ee46485b6fb5a78c37d8014f9a3
      https://github.com/dyninst/dyninst/commit/146f8a0f1dad9ee46485b6fb5a78c37d8014f9a3
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/h/Operation_impl.h
    M instructionAPI/src/Operation.C

  Log Message:
  -----------
  Cleanup, inline Operation ctor


  Commit: 6db6278ef2cd616e0c0839d19d996483753b7066
      https://github.com/dyninst/dyninst/commit/6db6278ef2cd616e0c0839d19d996483753b7066
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/src/Operation.C

  Log Message:
  -----------
  Remove x86 entry lookup in Operation::format

The decoder always populates the mnemonic, so this code will never be
used.


  Commit: d45ad827e60ea3af99c0fc1f6c64af414fccbcfa
      https://github.com/dyninst/dyninst/commit/d45ad827e60ea3af99c0fc1f6c64af414fccbcfa
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/h/Operation_impl.h
    M instructionAPI/src/Operation.C

  Log Message:
  -----------
  Operation: inline all member functions


  Commit: 67fcdb2fe596c6fd1a96e13b740737c77841e4bf
      https://github.com/dyninst/dyninst/commit/67fcdb2fe596c6fd1a96e13b740737c77841e4bf
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/h/Operation_impl.h
    M instructionAPI/src/x86/decoder.C

  Log Message:
  -----------
  Remove Operation::archDecodedFrom

It's no longer needed.


  Commit: 8038e516e6cebb54f3273dfd2bf3692b2a323e60
      https://github.com/dyninst/dyninst/commit/8038e516e6cebb54f3273dfd2bf3692b2a323e60
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/CMakeLists.txt
    R instructionAPI/src/Operation.C

  Log Message:
  -----------
  Remove Operation.C

All of it has been removed or inlined into its header.


  Commit: ef13170985e6ce5e28705dce620a8cb0923aa3fd
      https://github.com/dyninst/dyninst/commit/ef13170985e6ce5e28705dce620a8cb0923aa3fd
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M instructionAPI/h/Instruction.h
    M instructionAPI/src/Instruction.C

  Log Message:
  -----------
  Start of deprecating get{Read,Write}Set


  Commit: 23f2be876712177de9a85490c26d151a7937e463
      https://github.com/dyninst/dyninst/commit/23f2be876712177de9a85490c26d151a7937e463
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M dataflowAPI/src/AbslocInterface.C

  Log Message:
  -----------
  Only use explicit operand to make assignments for x86 pop

It is no longer guaranteed that the first operand coming from
getAllOperands is the destination. It _is_ guaranteed to be the first
explicit operand- because -it's the only explicit one.


  Commit: c524457faca7b882ec37c8171fd52ee92d651832
      https://github.com/dyninst/dyninst/commit/c524457faca7b882ec37c8171fd52ee92d651832
  Author: Tim Haines <thaines.astro@xxxxxxxxx>
  Date:   2025-12-03 (Wed, 03 Dec 2025)

  Changed paths:
    M parseAPI/src/IndirectAnalyzer.C

  Log Message:
  -----------
  Do not build a jump table for an instruction without an assignment

This can happen when semantic information is incomplete for the
instruction.


Compare: https://github.com/dyninst/dyninst/compare/69a3a91cdb21...c524457faca7

To unsubscribe from these emails, change your notification settings at https://github.com/dyninst/dyninst/settings/notifications
[← Prev in Thread] Current Thread [Next in Thread→]
  • [DynInst_API:] [dyninst/dyninst] da2033: Decode implicit memory operands, Tim Haines <=