Branch: refs/heads/master
  Home:   https://github.com/dyninst/dyninst
  Commit: 3b64ef448dc6fab0c2609005e83709b84a07c620
      
https://github.com/dyninst/dyninst/commit/3b64ef448dc6fab0c2609005e83709b84a07c620
  Author: Tim Haines <thaines.as...@gmail.com>
  Date:   2023-11-28 (Tue, 28 Nov 2023)

  Changed paths:
    M .gitignore
    M common/h/mnemonics/x86_entryIDs.h
    M common/src/arch-x86.C
    M dataflowAPI/src/RoseInsnFactory.C
    M dataflowAPI/src/convertOpcodes.C
    M dataflowAPI/src/stackanalysis.C
    A instructionAPI/capstone/aarch64.py
    A instructionAPI/capstone/capstone.py
    A instructionAPI/capstone/import.py
    A instructionAPI/capstone/ppc.py
    A instructionAPI/capstone/x86.py
    M instructionAPI/src/Instruction.C
    M instructionAPI/src/InstructionCategories.C
    M instructionAPI/src/InstructionDecoder-x86.C
    M instructionAPI/src/Operation.C
    M parseAPI/src/BoundFactCalculator.C
    M parseAPI/src/BoundFactData.C
    M parseAPI/src/IA_x86.C
    M parseAPI/src/IdiomModelDesc.C

  Log Message:
  -----------
  Synchronize x86 mnemonics with Capstone (#1634)

* Create Capstone import script

This currently only supports x86, but can be readily expanded to the
other architectures.

* Remove invalid opcodes

Some of these are used to label subtypes of the general
instruction and some are just madeup mnemonics that were never
used in Dyninst.

* Move pseudo-mnemonics to top of file

This makes them easier to see.

* Remove AT&T aliases

* Replace fstcw with fnstcw
* Replace fstenv with fnstenv
* Replace fstsw with fnstsw
* Replace fsave with fnsave

The fstX instructions are actually aliases for 'waitf' followed by
the fnstX variant. There's no need to have both.

* Rename loopn -> loopne

loopn isn't a valid mnemonic for 0xE0.

* Remove e_jmpe

The opcode 0x0FB8 is decoded as popcnt unless the preceeding byte is
0xF3. However, not even Xed decodes this instruction. From Table A-3 of
the June 2021 Intel SDM:

  JMPE (reserved for emulator on IPF)

* Rename cmpxch -> cmpxchg
* Rename e_cmpxch -> e_cmpxchg
* Rename cmpxch8b -> cmpxchg8b
* Rename e_prefetchNTA -> e_prefetchnta
* Rename e_prefetchT0 -> e_prefetcht0
* Rename e_prefetchT1 -> e_prefetcht1
* Rename e_prefetchT2 -> e_prefetcht2
* Rename e_punpcklqld -> e_punpcklqdq

* Rename e_shl_sal -> e_shl

There's no real concensus, but Capstone and Xed use shl.

* Rename e_ud -> e_ud0

* Make cmovnbe an alias of cmova
* Make cmovnb an alias of cmovae
* Make cmovnae an alias of cmovb
* Make cmovng an alias of cmovle
* Make cmovnge an alias of cmovl
* Make cmovnl an alias of cmovge
* Make cmovpe an alias of cmovp
* Make cmovpo an alias of cmovnp
* Make cwd an alias of cdq
* Make fcomip an alias of fcompi
* Make fucomip an alias of fucompi
* Make jnb an alias of jae
* Make jnbe an alias of ja
* Make jnl an alias of jge
* Make jnle an alias of jg
* Make jnz an alias of jne
* Make jz an alias of je
* Make jrcxz an alias of jcxz
* Make lods an alias of lodsb

* Make popa an alias of popal

popal isn't a valid mnemonic, but it's what Capstone uses.

* Make popad an alias of popaw

popaw isn't a valid mnemonic, but it's what Capstone uses.

* Make pushad, pusha, and pushaw aliases of pushal

pushal isn't a valid mnemonic, but it's what Capstone uses.

* Make pushfd an alias of pushf
* Make setnb an alias of setae
* Make setnbe an alias of seta
* Make setnl an alias of setge
* Make setnle an alias of setg
* Make setnz an alias of setne
* Make setz an alias of sete
* Make xlat an alias of xlatb

* Add new mnemonics


_______________________________________________
Dyninst-api mailing list
Dyninst-api@cs.wisc.edu
https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api

Reply via email to