org.jf.dexlib2.Opcode.setsResult()方法的使用及代码示例

x33g5p2x  于2022-01-26 转载在 其他  
字(3.2k)|赞(0)|评价(0)|浏览(83)

本文整理了Java中org.jf.dexlib2.Opcode.setsResult()方法的一些代码示例,展示了Opcode.setsResult()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Opcode.setsResult()方法的具体详情如下:
包路径:org.jf.dexlib2.Opcode
类名称:Opcode
方法名:setsResult

Opcode.setsResult介绍

暂无

代码示例

代码示例来源:origin: JesusFreke/smali

private void analyzeMoveResult(@Nonnull AnalyzedInstruction analyzedInstruction) {
  AnalyzedInstruction previousInstruction = null;
  if (analyzedInstruction.instructionIndex > 0) {
    previousInstruction = analyzedInstructions.valueAt(analyzedInstruction.instructionIndex-1);
  }
  if (previousInstruction == null || !previousInstruction.instruction.getOpcode().setsResult()) {
    throw new AnalysisException(analyzedInstruction.instruction.getOpcode().name + " must occur after an " +
        "invoke-*/fill-new-array instruction");
  }
  RegisterType resultRegisterType;
  ReferenceInstruction invokeInstruction = (ReferenceInstruction)previousInstruction.instruction;
  Reference reference = invokeInstruction.getReference();
  if (reference instanceof MethodReference) {
    resultRegisterType = RegisterType.getRegisterType(classPath, ((MethodReference)reference).getReturnType());
  } else {
    resultRegisterType = RegisterType.getRegisterType(classPath, (TypeReference)reference);
  }
  setDestinationRegisterTypeAndPropagateChanges(analyzedInstruction, resultRegisterType);
}

代码示例来源:origin: KB5201314/ZjDroid

private void analyzeMoveResult(@Nonnull AnalyzedInstruction analyzedInstruction) {
  AnalyzedInstruction previousInstruction = analyzedInstructions.valueAt(analyzedInstruction.instructionIndex-1);
  if (!previousInstruction.instruction.getOpcode().setsResult()) {
    throw new AnalysisException(analyzedInstruction.instruction.getOpcode().name + " must occur after an " +
        "invoke-*/fill-new-array instruction");
  }
  RegisterType resultRegisterType;
  ReferenceInstruction invokeInstruction = (ReferenceInstruction)previousInstruction.instruction;
  Reference reference = invokeInstruction.getReference();
  if (reference instanceof MethodReference) {
    resultRegisterType = RegisterType.getRegisterType(classPath, ((MethodReference)reference).getReturnType());
  } else {
    resultRegisterType = RegisterType.getRegisterType(classPath, (TypeReference)reference);
  }
  setDestinationRegisterTypeAndPropagateChanges(analyzedInstruction, resultRegisterType);
}

代码示例来源:origin: org.smali/dexlib2

private void analyzeMoveResult(@Nonnull AnalyzedInstruction analyzedInstruction) {
  AnalyzedInstruction previousInstruction = null;
  if (analyzedInstruction.instructionIndex > 0) {
    previousInstruction = analyzedInstructions.valueAt(analyzedInstruction.instructionIndex-1);
  }
  if (previousInstruction == null || !previousInstruction.instruction.getOpcode().setsResult()) {
    throw new AnalysisException(analyzedInstruction.instruction.getOpcode().name + " must occur after an " +
        "invoke-*/fill-new-array instruction");
  }
  RegisterType resultRegisterType;
  ReferenceInstruction invokeInstruction = (ReferenceInstruction)previousInstruction.instruction;
  Reference reference = invokeInstruction.getReference();
  if (reference instanceof MethodReference) {
    resultRegisterType = RegisterType.getRegisterType(classPath, ((MethodReference)reference).getReturnType());
  } else {
    resultRegisterType = RegisterType.getRegisterType(classPath, (TypeReference)reference);
  }
  setDestinationRegisterTypeAndPropagateChanges(analyzedInstruction, resultRegisterType);
}

相关文章