Support for conversion from Instruction API objects to Rose SgAsmInstruction objects...
authorSunny Shah <shah28@wisc.edu>
Tue, 7 Jun 2016 19:21:19 +0000 (14:21 -0500)
committerSunny Shah <shah28@wisc.edu>
Tue, 7 Jun 2016 19:21:19 +0000 (14:21 -0500)
commit26a67de8099a521a37acee996d70ef594c924a32
tree4431f68931aa8ec38c20a55895806abd00d89218
parent38868b2b8713fe56c421ff5256d4ce46c00181b2
Support for conversion from Instruction API objects to Rose SgAsmInstruction objects for ARMv8

This commit is the first in a branch that will contain all changes for enabling the conversion from ARMv8 Instruction API objects to SgAsmInstruction objects. Since ROSE doesn't support ARMv8, the instruction representation for it has been added by extending SgAsmInstruction. getROSERegister is also modified to map Dyninst registers to ROSE ARMv8 registers, which have again been newly added and are defined in the armv8InstructionEnum file. ROSE instruction factory for ARMv8 does not perform any processing to Instruction API operands when performing the conversion (unlike x86 and Power) -- this is primarily because there is no existing ARMv8 semantics to conform to.

This commit also brings in lots of changes to the ROSE interface for representing an instruction and its parts:
* SgAsm*ValueExpression types are now replaces with SgAsm(Integer/Float)ValueExpression types; SgAsmType* have been replaced by SgAsmType(Integer/Float). The old classes remain to support the existing x86/Power semantics.
* Several changes are made to the classes that were already present. These changes support existing semantics and will also work for ARMv8.
* New classes have been added for representation of expressions.
* Several classes in the Sawyer namespace of ROSE have been added -- these are used in the newly introduced Sg* classes, and will also be used for ARM semantics.
* ROSE's new representation for registers uses RegisterDescriptor and a new class for register expressions (SgAsmDirectRegisterExoression).
* The new types are used based on a check on the architecture.
* Opcodes for ARMv8 have the same name in ROSE as in Dyninst, except that the name is prefixed by the string "rose_".
34 files changed:
common/src/dyn_regs.C
dataflowAPI/rose/RegisterDescriptor.h [new file with mode: 0644]
dataflowAPI/rose/SgAsmArmv8Instruction.h [new file with mode: 0644]
dataflowAPI/rose/SgAsmExpression.h
dataflowAPI/rose/SgAsmInstruction.h
dataflowAPI/rose/SgAsmOperandList.h
dataflowAPI/rose/SgAsmType.h
dataflowAPI/rose/conversions.h
dataflowAPI/rose/integerOps.h
dataflowAPI/rose/util/Assert.C [new file with mode: 0644]
dataflowAPI/rose/util/Assert.h [new file with mode: 0644]
dataflowAPI/rose/util/BitVector.h [new file with mode: 0644]
dataflowAPI/rose/util/BitVectorSupport.h [new file with mode: 0644]
dataflowAPI/rose/util/Interval.h [new file with mode: 0644]
dataflowAPI/rose/util/Map.h [new file with mode: 0644]
dataflowAPI/rose/util/Message.C [new file with mode: 0644]
dataflowAPI/rose/util/Message.h [new file with mode: 0644]
dataflowAPI/rose/util/Optional.h [new file with mode: 0644]
dataflowAPI/rose/util/Sawyer.C [new file with mode: 0644]
dataflowAPI/rose/util/Sawyer.h [new file with mode: 0644]
dataflowAPI/rose/util/SharedPointer.h [new file with mode: 0644]
dataflowAPI/rose/util/Synchronization.C [new file with mode: 0644]
dataflowAPI/rose/util/Synchronization.h [new file with mode: 0644]
dataflowAPI/rose/util/WarningsOff.h [new file with mode: 0644]
dataflowAPI/rose/util/WarningsRestore.h [new file with mode: 0644]
dataflowAPI/src/ExpressionConversionVisitor.C
dataflowAPI/src/RoseImpl.C
dataflowAPI/src/RoseInsnFactory.C
dataflowAPI/src/RoseInsnFactory.h
dataflowAPI/src/convertOpcodes.C
external/rose/armv8InstructionEnum.h [new file with mode: 0644]
external/rose/rose-compat.h
external/variantComparer.py [new file with mode: 0644]
parseAPI/CMakeLists.txt