java.lang.Object
java.lang.Enum<ACS.OPS>
com.pnfsoftware.jeb.core.units.code.asm.decompiler.ACS.OPS
All Implemented Interfaces:
Serializable, Comparable<ACS.OPS>, Constable
Enclosing class:
ACS

public static enum ACS.OPS extends Enum<ACS.OPS>
Operators for gendec auto-conversion semantics.
  • Enum Constant Details

    • CUSTOM

      public static final ACS.OPS CUSTOM
      Needs a custom (specific) handler. Can be used for instructions requiring manual conversion.
    • NOP

      public static final ACS.OPS NOP
      No-operation. Used to generate an IENop.
    • MOVE

      public static final ACS.OPS MOVE
      Generic move. No assumption. For move to/from memory, STORE and LOAD may be better candidates.
    • STORE

      public static final ACS.OPS STORE
      Move to memory.
           DST = SRC1 (DST must be a MEMORY operand)
       or: [SRC2] = SRC1
       or: [SRC2 + SRC3] = SRC1
       
       If bitsize is unspecified: bitsize(SRC1) is assumed
       Extension mode is N/A
       
       
    • LOAD

      public static final ACS.OPS LOAD
      Move from memory.
           DST = xxx_EXTEND_TO_DSTSIZE(SRC1)                // src1 must be a mem
       or: DST = xxx_EXTEND_TO_DSTSIZE(msize[SRC1])         // bitsize must be specified
       or: DST = xxx_EXTEND_TO_DSTSIZE(msize[SRC1 + SRC2])  // bitsize must be specified
       
      Bitsize should be specified. In the general, the destination (register) is larger than the memory access. The extension mode may be specified.
    • ADD

      public static final ACS.OPS ADD
      Integer addition.
      Bitsize may be specified, as well as extension mode, if parts of the operation takes place on parts of the sources.
    • SUB

      public static final ACS.OPS SUB
      Integer subtraction.
    • MUL

      public static final ACS.OPS MUL
    • DIV_S

      public static final ACS.OPS DIV_S
    • DIV_U

      public static final ACS.OPS DIV_U
    • REM_S

      public static final ACS.OPS REM_S
    • REM_U

      public static final ACS.OPS REM_U
    • AND

      public static final ACS.OPS AND
    • OR

      public static final ACS.OPS OR
    • XOR

      public static final ACS.OPS XOR
    • NOT

      public static final ACS.OPS NOT
    • SHL

      public static final ACS.OPS SHL
    • SHR

      public static final ACS.OPS SHR
    • SAR

      public static final ACS.OPS SAR
    • SET_IF_EQ

      public static final ACS.OPS SET_IF_EQ
      Set/reset destination is 2 source operands are equals/not equals.
      - Required: src1, src2: operands for comparison.
      - Required: src3: target address.
    • SET_IF_NE

      public static final ACS.OPS SET_IF_NE
    • SET_IF_LT_S

      public static final ACS.OPS SET_IF_LT_S
    • SET_IF_LT_U

      public static final ACS.OPS SET_IF_LT_U
    • SET_IF_LE_S

      public static final ACS.OPS SET_IF_LE_S
    • SET_IF_LE_U

      public static final ACS.OPS SET_IF_LE_U
    • SET_IF_GT_S

      public static final ACS.OPS SET_IF_GT_S
    • SET_IF_GT_U

      public static final ACS.OPS SET_IF_GT_U
    • SET_IF_GE_S

      public static final ACS.OPS SET_IF_GE_S
    • SET_IF_GE_U

      public static final ACS.OPS SET_IF_GE_U
    • JUMP_IF_EQ

      public static final ACS.OPS JUMP_IF_EQ
      Conditional branch. Needs three operands: two sources for comparison; a third source being the target address (could be a register, or an immediate address that was encoded as a PC-relative disp. for ex.)
    • JUMP_IF_NE

      public static final ACS.OPS JUMP_IF_NE
    • JUMP_IF_LT_S

      public static final ACS.OPS JUMP_IF_LT_S
    • JUMP_IF_LT_U

      public static final ACS.OPS JUMP_IF_LT_U
    • JUMP_IF_LE_S

      public static final ACS.OPS JUMP_IF_LE_S
    • JUMP_IF_LE_U

      public static final ACS.OPS JUMP_IF_LE_U
    • JUMP_IF_GT_S

      public static final ACS.OPS JUMP_IF_GT_S
    • JUMP_IF_GT_U

      public static final ACS.OPS JUMP_IF_GT_U
    • JUMP_IF_GE_S

      public static final ACS.OPS JUMP_IF_GE_S
    • JUMP_IF_GE_U

      public static final ACS.OPS JUMP_IF_GE_U
    • JUMP

      public static final ACS.OPS JUMP
      Unconditional branch, for regular branching or call-to-sub branching.
      - Required: src1: the target address.
      - Optional: src2: added to the target if provided.
      - Optional: dst: a link register that will receive the fall-through address, for call-to-sub branching.
      - Optional: maskOnSource: AND'ed to the calculated before assigning to PC.
  • Method Details

    • values

      public static ACS.OPS[] values()
      Returns an array containing the constants of this enum class, in the order they are declared.
      Returns:
      an array containing the constants of this enum class, in the order they are declared
    • valueOf

      public static ACS.OPS valueOf(String name)
      Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)
      Parameters:
      name - the name of the enum constant to be returned.
      Returns:
      the enum constant with the specified name
      Throws:
      IllegalArgumentException - if this enum class has no constant with the specified name
      NullPointerException - if the argument is null
    • getDirectConversionOperationType

      public OperationType getDirectConversionOperationType()
      Straight-up conversion to an OperationType.
      Returns:
      may be null