Interface IEUntranslatedInstruction

All Superinterfaces:
IEGeneric, IEStatement, IInstruction, IInstructionOperand, IResizableInstruction

@Ser public interface IEUntranslatedInstruction extends IEStatement
Special IR statement that can be used to wrap non-standard, partially translated, or untranslated native code instructions. The untranslated native instruction can be seen as a blackbox; the IR EUntranslatedInstruction can be seen as a variant of ECall.

By default, IR-Evaluation fails and C-Generation yields basic boilerplate. Both can be customized in the converter.

Default memory access information is set to NONE and can be customized.

  • Field Details

    • TAG_CUSTOM_NAME

      static final String TAG_CUSTOM_NAME
      Tag name for an optional entry holding the custom name of this untranslated IR, possibly better suited than the native mnemonic name.

      Value: String.

      See Also:
  • Method Details

    • setNativeAddress

      void setNativeAddress(long nativeAddress)
    • getNativeAddress

      long getNativeAddress()
    • setNativeMnemonic

      void setNativeMnemonic(String mnemonic)
    • getNativeMnemonic

      String getNativeMnemonic()
    • setTag

      void setTag(Object tag)
      Set an optional default tag. Same as setTag(null, object). The tag must be serializable.
      Parameters:
      tag - a simple immutable Java object annotated @Ser
    • getTag

      Object getTag()
      Get the optional default tag.
      Returns:
    • setTag

      void setTag(String key, Object tag)
      Store a tag. Same as getTag(null)
      Parameters:
      key - mandatory key
      tag - null to remove; else, must be a simple immutable Java object
    • getTags

      Map<String,Object> getTags()
      Retrieve a copy of all the tags. The tag with the null key is the default tag.
      Returns:
    • getTag

      Object getTag(String key)
      Retrieve a tag.
      Parameters:
      key -
      Returns:
    • setParameterExpressions

      void setParameterExpressions(Collection<IEGeneric> params)
      Parameters:
      params -
    • setParameterExpressions

      void setParameterExpressions(IEGeneric... params)
    • getParameterExpressions

      List<IEGeneric> getParameterExpressions()
      Returns:
      the actual list (can be modified; do not insert nulls)
    • getParameterExpression

      IEGeneric getParameterExpression(int index)
      Parameters:
      index -
      Returns:
    • setReturnExpression

      void setReturnExpression(IEGeneric expression)
      Set a single return expression.
      Parameters:
      expression - an expression, or null to specify that this IRE does not return anything
    • getReturnExpression

      IEGeneric getReturnExpression()
      Retrieve the primary return expression (if the IR returns a tuple, the primary return expression if the first item in the tuple).
      Returns:
    • setReturnExpressions

      void setReturnExpressions(List<IEGeneric> expressions)
      Set the tuple returned by this IR.
      Parameters:
      expressions - a list consisting of non-null expressions
    • setReturnExpressions

      void setReturnExpressions(IEGeneric... expressions)
    • getReturnExpressions

      List<IEGeneric> getReturnExpressions()
      Get the tuple returned by this IR.
      Returns:
      the actual list (can be modified; do not insert nulls)
    • setMemoryAccessInfo

      void setMemoryAccessInfo(MemoryAccessInfo info)
    • getMemoryAccessInfo

      MemoryAccessInfo getMemoryAccessInfo()
    • addSideEffectDefinedVariable

      void addSideEffectDefinedVariable(IEVar... vars)
    • getSideEffectDefinedVariables

      Set<IEVar> getSideEffectDefinedVariables()
    • addSideEffectUsedVariable

      void addSideEffectUsedVariable(IEVar... vars)
    • getSideEffectUsedVariables

      Set<IEVar> getSideEffectUsedVariables()
    • addSideEffectSpoiledVariable

      void addSideEffectSpoiledVariable(IEVar... vars)
    • getSideEffectSpoiledVariables

      Set<IEVar> getSideEffectSpoiledVariables()
    • setBreakingFlow

      void setBreakingFlow(IFlowInformation flowinfo)
    • setRoutineCall

      void setRoutineCall(IFlowInformation flowinfo)