Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

X87 Instruction support #45

Open
82 of 92 tasks
pgoodman opened this issue Sep 7, 2016 · 1 comment
Open
82 of 92 tasks

X87 Instruction support #45

pgoodman opened this issue Sep 7, 2016 · 1 comment
Labels
enhancement help wanted missing instruction semantic Related to an instruction semantic that has not yet been implemented in Remill x86 Related to x86/x86-64/AMD64 lifting support
Projects

Comments

@pgoodman
Copy link
Collaborator

pgoodman commented Sep 7, 2016

Implement and test the following instructions:

  • F2XM1
  • FABS
  • FADD
  • FADDP
  • FBLD
  • FBSTP
  • FCHS
  • FCMOVB
  • FCMOVBE
  • FCMOVE
  • FCMOVNB
  • FCMOVNBE
  • FCMOVNE
  • FCMOVNU
  • FCMOVU
  • FCOM
  • FCOMI
  • FCOMIP
  • FCOMP
  • FCOMPP
  • FCOS
  • FDECSTP
  • FDISI8087_NOP
  • FDIV
  • FDIVP
  • FDIVR
  • FDIVRP
  • FENI8087_NOP
  • FFREE
  • FFREEP
  • FIADD
  • FICOM
  • FICOMP
  • FIDIV
  • FIDIVR
  • FILD
  • FIMUL
  • FINCSTP
  • FIST
  • FISTP
  • FISTTP
  • FISUB
  • FISUBR
  • FLD
  • FLD1
  • FLDCW
  • FLDENV
  • FLDL2E
  • FLDL2T
  • FLDLG2
  • FLDLN2
  • FLDPI
  • FLDZ
  • FMUL
  • FMULP
  • FNCLEX
  • FNINIT
  • FNOP
  • FNSAVE
  • FNSTCW
  • FNSTENV
  • FNSTSW
  • FPATAN
  • FPREM
  • FPREM1
  • FPTAN
  • FRNDINT
  • FRSTOR
  • FSCALE
  • FSETPM287_NOP
  • FSIN
  • FSINCOS
  • FSQRT
  • FST
  • FSTP
  • FSTPNCE
  • FSUB
  • FSUBP
  • FSUBR
  • FSUBRP
  • FTST
  • FUCOM
  • FUCOMI
  • FUCOMIP
  • FUCOMP
  • FUCOMPP
  • FWAIT
  • FXAM
  • FXCH
  • FXTRACT
  • FYL2X
  • FYL2XP1
pgoodman pushed a commit that referenced this issue Oct 18, 2016
* Remove old 'test' function.

* Start to MMX PUNPCK instructions.

* Initial example for a PUNPCK instruction.

* MMX Instruction support(PADD/PSUB); Fix for handling signed operations;

* Should fix Issue #56. Used -isystem instead of -I, as it's an include of <cstdint> instead of "stdint.h". @erhlee-bird does this work on your system?

* Minor changes

* Cleanups to Operators.h. Specifically, to the signed versions of vector operations. They now more strictly enforce type safety. This caught a few bugs. Operators.h is arguable simpler as a result.

* merged conflict;

* MMX Instructions (PAVG/PHSUB/PMULHRS)

* Testcases for PADD/PSUB; Fix for signed/unsigned saturation;

* Test cases for PAVG/PABS/PACKSS; Fixes for MMX instructions handling;

* Fixed PACKSSWB instruction handling;

* PHADD/PHADDSW Instruction;

* PMAXSW/PMAXUB/PMINSW/PMINUB Instructions

* PCMP/PUNPCK/PMUL Instructions;

* Corrected space indentation;

* Fixed build issue;

* reimplemntation of instructions with saturation arithmetic

* PSLL/PSRL/PMUL instructions;

* Add in some missing arg parsing to Run.cpp. Set the minimum default log level in the test runner so that Travis logs don't explode so much, causing Travis to cancel an otherwise 'good' job.

* Update README.md (#62)

Fixed install path for install_gtest.sh

* Fixed failing testcases for PSLL/PSRA/PSRL/PACKSS

* Cleanup and resolved TODO comments;

* Added new testcases for MMX instructions;

* Fixes Issues #52 and #53. Addresses first comment of Issue #45.

* MIssing file

* Renaming test cases

* In progress changes. Moduler verifier is complaining about lack of \!dbg location entries. Adding a SourceWriter to produce something semi-useful.

* Linking lifted instruction code to printed out assembly code now works

* Added new instruction and testcase for CVTPI2PS. Made general improvements:
- made it so that disassembled instructions can be printed to a file, and linked back to the bitcode via debug info.
- eliminated the unnecessary _read and _write suffixes for registers in __remill_basic_block.
pgoodman added a commit that referenced this issue Oct 18, 2016
…X semantics

Issue 44 mmx support (#58)

* Should fix Issue #56. Used -isystem instead of -I, as it's an include of <cstdint> instead of "stdint.h". @erhlee-bird does this work on your system?

* Minor changes

* Remove old 'test' function.

* Start to MMX PUNPCK instructions.

* Initial example for a PUNPCK instruction.

* Cleanups to Operators.h. Specifically, to the signed versions of vector operations. They now more strictly enforce type safety. This caught a few bugs. Operators.h is arguable simpler as a result.

* MMX Instruction support(PADD/PSUB); Fix for handling signed operations;

* Should fix Issue #56. Used -isystem instead of -I, as it's an include of <cstdint> instead of "stdint.h". @erhlee-bird does this work on your system?

* Minor changes

* Cleanups to Operators.h. Specifically, to the signed versions of vector operations. They now more strictly enforce type safety. This caught a few bugs. Operators.h is arguable simpler as a result.

* merged conflict;

* MMX Instructions (PAVG/PHSUB/PMULHRS)

* Testcases for PADD/PSUB; Fix for signed/unsigned saturation;

* Test cases for PAVG/PABS/PACKSS; Fixes for MMX instructions handling;

* Fixed PACKSSWB instruction handling;

* PHADD/PHADDSW Instruction;

* PMAXSW/PMAXUB/PMINSW/PMINUB Instructions

* PCMP/PUNPCK/PMUL Instructions;

* Corrected space indentation;

* Fixed build issue;

* reimplemntation of instructions with saturation arithmetic

Minor syntax fixes. Added beginning of an implementation for EMMS.

Issue 44 mmx support (#65)

* Remove old 'test' function.

* Start to MMX PUNPCK instructions.

* Initial example for a PUNPCK instruction.

* MMX Instruction support(PADD/PSUB); Fix for handling signed operations;

* Should fix Issue #56. Used -isystem instead of -I, as it's an include of <cstdint> instead of "stdint.h". @erhlee-bird does this work on your system?

* Minor changes

* Cleanups to Operators.h. Specifically, to the signed versions of vector operations. They now more strictly enforce type safety. This caught a few bugs. Operators.h is arguable simpler as a result.

* merged conflict;

* MMX Instructions (PAVG/PHSUB/PMULHRS)

* Testcases for PADD/PSUB; Fix for signed/unsigned saturation;

* Test cases for PAVG/PABS/PACKSS; Fixes for MMX instructions handling;

* Fixed PACKSSWB instruction handling;

* PHADD/PHADDSW Instruction;

* PMAXSW/PMAXUB/PMINSW/PMINUB Instructions

* PCMP/PUNPCK/PMUL Instructions;

* Corrected space indentation;

* Fixed build issue;

* reimplemntation of instructions with saturation arithmetic

* PSLL/PSRL/PMUL instructions;

* Add in some missing arg parsing to Run.cpp. Set the minimum default log level in the test runner so that Travis logs don't explode so much, causing Travis to cancel an otherwise 'good' job.

* Update README.md (#62)

Fixed install path for install_gtest.sh

* Fixed failing testcases for PSLL/PSRA/PSRL/PACKSS

* Cleanup and resolved TODO comments;

* Added new testcases for MMX instructions;

* Fixes Issues #52 and #53. Addresses first comment of Issue #45.

* MIssing file

* Renaming test cases

* In progress changes. Moduler verifier is complaining about lack of \!dbg location entries. Adding a SourceWriter to produce something semi-useful.

* Linking lifted instruction code to printed out assembly code now works

* Added new instruction and testcase for CVTPI2PS. Made general improvements:
- made it so that disassembled instructions can be printed to a file, and linked back to the bitcode via debug info.
- eliminated the unnecessary _read and _write suffixes for registers in __remill_basic_block.

Mostly cosmetic changes. For example, limiting line length, putting spaces before the opening parens of loops, etc. Renamed all the semantics files to be cpp source files instead of header files. That stops cpplint from complaining about anonymous namespaces in headers ;-)
@mike-myers-tob mike-myers-tob added this to To do in SEEL Dec 4, 2017
@mike-myers-tob mike-myers-tob self-assigned this Dec 4, 2017
@mike-myers-tob mike-myers-tob moved this from To do to Doing in SEEL Dec 11, 2017
@mike-myers-tob mike-myers-tob added this to the Remill version 2.1.0 milestone Dec 11, 2017
@mike-myers-tob
Copy link
Contributor

  • (X86 f115d018 5 (BYTES 0f ae 44 24 30) FXSAVE_MEMmfpxenv (WRITE_OP (DWORD_PTR (ADD (REG_32 SS_BASE) (REG_32 ESP) (SIGNED_IMM_32 0x30)))))
  • FXRSTOR

@ranweiler ranweiler mentioned this issue Jan 13, 2018
2 tasks
@mike-myers-tob mike-myers-tob removed this from the Remill version 2.1.0 milestone Sep 6, 2018
@mike-myers-tob mike-myers-tob added missing instruction semantic Related to an instruction semantic that has not yet been implemented in Remill x86 Related to x86/x86-64/AMD64 lifting support labels Oct 3, 2019
@mike-myers-tob mike-myers-tob removed their assignment Mar 6, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement help wanted missing instruction semantic Related to an instruction semantic that has not yet been implemented in Remill x86 Related to x86/x86-64/AMD64 lifting support
Projects
No open projects
SEEL
  
Doing
Development

No branches or pull requests

2 participants