Conversation
**New** (According to LLVM changelog) - Added DFP instruction. - Added the SCV instruction. **Changes** - Memory decoder were simplified by decoding disponent and base reg separately. - `DFORM` -> `DFORM_BASE` - Use inverted `MCInstDesc` table. - Replace the many declared printer in PPCInstPrinter with `static inlines`. - Renamed groups to upper case. - Switched to `ARCH_add_cs_detail_X()` function names. - Remove `PPCInstPrinter.h` because it is no longer used.
Due to llvm/llvm-project@4b43ef3 the names of the operands were matched. Because FRT dosn't exist in the XForm_1 class, the generated tables didn't decoded them.
Only enables PowerX feature checks of a Power architecture is enabled and the feature is in the list of it.
This helps with copy and search of the byte string in the test files.
|
@kabeor take a look at this one please |
|
Huge thanks for doing this. It looks like LLVM is choosing to only implement either an X-form or a D-form of some instructions[1]. It would be nice to have both forms, but that would require manual tracking. Is there a mechanism in the auto-sync importer to do this? I'd be happy to submit a PR for that. [1] See dyninst/dyninst@64cec85 for a few examples based on v3.1C of the standard. |
|
@hainest Do you have two example byte strings for testing. One in X one in D form? Then I can check how they decode. |
|
Let me run them through an assembler. I just realized that it might actually be a difference in regular versus extended mnemonics. |
|
@hainest I currently fix some regressions of this one and checked one example from the link you provided. LLVM seemed to implement only the It would be nice if you open an issue about it, if you find some. |
|
@hainest Off-topic. But I see your tool also seems to use Capstone quite extensively. If you have any work arounds for buggy instruction details, I would be really happy if you can open issues about it. One issue to collect all of them is fine. |
So sorry, I've been inundated with fixing bugs. I will try to take a look at these over the weekend and get you some more details. I'll open an issue once I have something concrete. |
Yes. I have some x86 instruction semantics that I'd like to add. I have three more instructions to analyze before I'm read to submit them. That said, I am very much in favor of integrating Zydis into Capstone. It's just too much work to keep track of the x86 instructions. I have confirmed that the missing semantics I found are present in Zydis. |
|
I have confirmed all but two of the instructions that I previously marked as 'missing' are now present and can be decoded by 5f290ca. 'dcffixqq' and 'dctfixqq' weren't available on the binutils I have access to, but they are in Capstone's decode tables. I haven't confirmed if they work. I've attached an assembly example so someone could write tests for these. I don't have the cycles to go through that detail of the manual right now. |
|
Ok, thanks for reporting back! |
Your checklist for this pull request
Detailed description
New
(According to LLVM changelog)
Changes
MCUpdatergenerates shorter and better readable file names.DFORM->DFORM_BASEMCInstDesctable.static inlines.ARCH_add_cs_detail_X()function names.PPCInstPrinter.hbecause it is no longer used.+aixEnables AIX OS assembly (only: PowerPC)+bookeEnables BOOKE extension (only: PowerPC)+maixEnables Modern AIX assembly (only: PowerPC)+msyncHas only the msync instruction instead of sync. Implies BookE. (only: PowerPC)+qpxEnables QPX extension (only: PowerPC)+psEnables PS extension (only: PowerPC)+speEnables SPE extension (only: PowerPC)Test plan
Newly added and all green.
Closing issues
...