[DynInst_API:] [dyninst/dyninst] 26a67d: Support for conversion from Instruction API object...


Date: Tue, 07 Jun 2016 13:09:19 -0700
From: Sunny Shah <shah28@xxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] 26a67d: Support for conversion from Instruction API object...
  Branch: refs/heads/arm64/feature/semantics_roseconvert
  Home:   https://github.com/dyninst/dyninst
  Commit: 26a67de8099a521a37acee996d70ef594c924a32
      https://github.com/dyninst/dyninst/commit/26a67de8099a521a37acee996d70ef594c924a32
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-06-07 (Tue, 07 Jun 2016)

  Changed paths:
    M common/src/dyn_regs.C
    A dataflowAPI/rose/RegisterDescriptor.h
    A dataflowAPI/rose/SgAsmArmv8Instruction.h
    M dataflowAPI/rose/SgAsmExpression.h
    M dataflowAPI/rose/SgAsmInstruction.h
    M dataflowAPI/rose/SgAsmOperandList.h
    M dataflowAPI/rose/SgAsmType.h
    M dataflowAPI/rose/conversions.h
    M dataflowAPI/rose/integerOps.h
    A dataflowAPI/rose/util/Assert.C
    A dataflowAPI/rose/util/Assert.h
    A dataflowAPI/rose/util/BitVector.h
    A dataflowAPI/rose/util/BitVectorSupport.h
    A dataflowAPI/rose/util/Interval.h
    A dataflowAPI/rose/util/Map.h
    A dataflowAPI/rose/util/Message.C
    A dataflowAPI/rose/util/Message.h
    A dataflowAPI/rose/util/Optional.h
    A dataflowAPI/rose/util/Sawyer.C
    A dataflowAPI/rose/util/Sawyer.h
    A dataflowAPI/rose/util/SharedPointer.h
    A dataflowAPI/rose/util/Synchronization.C
    A dataflowAPI/rose/util/Synchronization.h
    A dataflowAPI/rose/util/WarningsOff.h
    A dataflowAPI/rose/util/WarningsRestore.h
    M dataflowAPI/src/ExpressionConversionVisitor.C
    M dataflowAPI/src/RoseImpl.C
    M dataflowAPI/src/RoseInsnFactory.C
    M dataflowAPI/src/RoseInsnFactory.h
    M dataflowAPI/src/convertOpcodes.C
    A external/rose/armv8InstructionEnum.h
    M external/rose/rose-compat.h
    A external/variantComparer.py
    M parseAPI/CMakeLists.txt

  Log Message:
  -----------
  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_".


[← Prev in Thread] Current Thread [Next in Thread→]