本文整理汇总了Java中soot.jimple.MulExpr类的典型用法代码示例。如果您正苦于以下问题:Java MulExpr类的具体用法?Java MulExpr怎么用?Java MulExpr使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MulExpr类属于soot.jimple包,在下文中一共展示了MulExpr类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: visit
import soot.jimple.MulExpr; //导入依赖的package包/类
@Override
public void visit(Value e) {
if (e instanceof MulExpr) {
MulExpr me = (MulExpr) e;
add(e, me.getOp1(), me.getOp2());
}
}
开发者ID:petablox-project,项目名称:petablox,代码行数:8,代码来源:RelMulExpr.java
示例2: caseMulExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
/**
* It is not neccessary to treat arithmetic expressions. The SecurityLevels
* of this expressions are treated at an other place.
* @param v an arithmetic expression
*/
@Override
public void caseMulExpr(MulExpr v) {
logger.finest("Mul Expr identified " + callingStmt.toString());
rightElement = RightElement.NOT;
}
开发者ID:proglang,项目名称:jgs,代码行数:12,代码来源:AnnotationValueSwitch.java
示例3: caseMulExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
@Override
public void caseMulExpr(MulExpr v) {
throw new RuntimeException("todo");
}
开发者ID:srasthofer,项目名称:FuzzDroid,代码行数:6,代码来源:JimpleExprVisitorImpl.java
示例4: caseMulExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
public void caseMulExpr(MulExpr v) {
printBinaryExpr(v);
}
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:4,代码来源:ValueTemplatePrinter.java
示例5: handleBinopExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
private void handleBinopExpr(BinopExpr be, Stmt stmt, Type tlhs)
{
Value opl = be.getOp1(), opr = be.getOp2();
Type tl = AugEvalFunction.eval_(this.tg, opl, stmt, this.jb),
tr = AugEvalFunction.eval_(this.tg, opr, stmt, this.jb);
if ( be instanceof AddExpr
|| be instanceof SubExpr
|| be instanceof MulExpr
|| be instanceof DivExpr
|| be instanceof RemExpr
|| be instanceof GeExpr
|| be instanceof GtExpr
|| be instanceof LeExpr
|| be instanceof LtExpr
|| be instanceof ShlExpr
|| be instanceof ShrExpr
|| be instanceof UshrExpr )
{
if ( tlhs instanceof IntegerType )
{
be.setOp1(this.uv.visit(opl, IntType.v(), stmt));
be.setOp2(this.uv.visit(opr, IntType.v(), stmt));
}
}
else if ( be instanceof CmpExpr
|| be instanceof CmpgExpr
|| be instanceof CmplExpr )
{
// No checks in the original assigner
}
else if ( be instanceof AndExpr
|| be instanceof OrExpr
|| be instanceof XorExpr )
{
be.setOp1(this.uv.visit(opl, tlhs, stmt));
be.setOp2(this.uv.visit(opr, tlhs, stmt));
}
else if ( be instanceof EqExpr
|| be instanceof NeExpr )
{
if ( tl instanceof BooleanType && tr instanceof BooleanType )
{ }
else if ( tl instanceof Integer1Type || tr instanceof Integer1Type )
{ }
else if ( tl instanceof IntegerType )
{
be.setOp1(this.uv.visit(opl, IntType.v(), stmt));
be.setOp2(this.uv.visit(opr, IntType.v(), stmt));
}
}
}
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:53,代码来源:UseChecker.java
示例6: caseMulExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
@Override
public void caseMulExpr(MulExpr me) {
stmtV.addInsn(buildCalculatingBinaryInsn("MUL", me.getOp1(), me.getOp2()), origStmt);
}
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:5,代码来源:ExprVisitor.java
示例7: getResult
import soot.jimple.MulExpr; //导入依赖的package包/类
public NumericConstant getResult(BinopExpr binop){
if(DEBUG)
System.out.println("Binop expr"+binop);
Value leftOp = binop.getOp1();
Value rightOp = binop.getOp2();
int op = 0;
if(binop instanceof AddExpr){
op=1;
}
else if(binop instanceof SubExpr ||
binop instanceof DCmpExpr || binop instanceof DCmpgExpr
|| binop instanceof DCmplExpr){
op=2;
}
else if(binop instanceof MulExpr){
op=3;
}
if(op == 0){
if(DEBUG){
System.out.println("not add sub or mult");
System.out.println(binop.getClass().getName());
}
return null;
}
NumericConstant constant = null;
if(leftOp instanceof LongConstant && rightOp instanceof LongConstant){
if(DEBUG)
System.out.println("long constants!!");
if(op ==1)
constant = ((LongConstant)leftOp).add((LongConstant)rightOp);
else if(op ==2)
constant = ((LongConstant)leftOp).subtract((LongConstant)rightOp);
else if (op ==3)
constant = ((LongConstant)leftOp).multiply((LongConstant)rightOp);
}
else if(leftOp instanceof DoubleConstant && rightOp instanceof DoubleConstant){
if(DEBUG)
System.out.println("double constants!!");
if(op ==1)
constant = ((DoubleConstant)leftOp).add((DoubleConstant)rightOp);
else if(op ==2)
constant = ((DoubleConstant)leftOp).subtract((DoubleConstant)rightOp);
else if (op ==3)
constant = ((DoubleConstant)leftOp).multiply((DoubleConstant)rightOp);
}
else if(leftOp instanceof FloatConstant && rightOp instanceof FloatConstant){
if(DEBUG)
System.out.println("Float constants!!");
if(op ==1)
constant = ((FloatConstant)leftOp).add((FloatConstant)rightOp);
else if(op ==2)
constant = ((FloatConstant)leftOp).subtract((FloatConstant)rightOp);
else if (op ==3)
constant = ((FloatConstant)leftOp).multiply((FloatConstant)rightOp);
}
else if(leftOp instanceof IntConstant && rightOp instanceof IntConstant){
if(DEBUG)
System.out.println("Integer constants!!");
if(op ==1)
constant = ((IntConstant)leftOp).add((IntConstant)rightOp);
else if(op ==2)
constant = ((IntConstant)leftOp).subtract((IntConstant)rightOp);
else if (op ==3)
constant = ((IntConstant)leftOp).multiply((IntConstant)rightOp);
}
return constant;
}
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:72,代码来源:SimplifyExpressions.java
示例8: caseMulExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
public void caseMulExpr(MulExpr expr) {
caseBinopExpr(expr);
}
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:4,代码来源:UnitThrowAnalysis.java
示例9: caseMulExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
@Override
public void caseMulExpr(MulExpr arg0) {
translateBinOp(arg0);
}
开发者ID:SRI-CSL,项目名称:bixie,代码行数:5,代码来源:SootValueSwitch.java
示例10: caseMulExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
/**
* DOC
*
* @see soot.jimple.ExprSwitch#caseMulExpr(soot.jimple.MulExpr)
*/
@Override
public void caseMulExpr(MulExpr v) {
v.getOp1().apply(this);
v.getOp2().apply(this);
}
开发者ID:proglang,项目名称:jgs,代码行数:11,代码来源:AnnotationValueSwitch.java
示例11: caseMulExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
@Override
public void caseMulExpr(MulExpr v) {
throwInvalidWriteException(v);
}
开发者ID:proglang,项目名称:jgs,代码行数:5,代码来源:SecurityConstraintValueWriteSwitch.java
示例12: caseMulExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
@Override
public void caseMulExpr(MulExpr v) {
handleBinaryExpr(v.getOp1(), v.getOp2());
}
开发者ID:proglang,项目名称:jgs,代码行数:5,代码来源:SecurityConstraintValueReadSwitch.java
示例13: signOf
import soot.jimple.MulExpr; //导入依赖的package包/类
private Sign signOf(Value value, Map<Local, Sign> dfv) {
if (value instanceof Local) {
// if the value is a local variable, then look-up the data-flow map
Local local = (Local) value;
if (dfv.containsKey(local)) {
return dfv.get(local);
} else {
return Sign.TOP;
}
} else if (value instanceof NumericConstant) {
// If the value is a constant, we can get a definite sign
NumericConstant num = (NumericConstant) value;
NumericConstant zero = IntConstant.v(0);
NumericConstant one = IntConstant.v(1);
if (num.lessThan(zero).equals(one)) {
return NEGATIVE;
} else if (num.greaterThan(zero).equals(one)) {
return POSITIVE;
} else {
return ZERO;
}
} else if (value instanceof BinopExpr) {
BinopExpr expr = (BinopExpr) value;
Value op1 = expr.getOp1();
Value op2 = expr.getOp2();
Sign sign1 = signOf(op1, dfv);
Sign sign2 = signOf(op2, dfv);
if (value instanceof AddExpr) {
// Handle arithmetic plus
return sign1.plus(sign2);
} else if (value instanceof MulExpr) {
// Handle arithmetic multiplication
return sign1.mult(sign2);
} else {
// We do not handle other types of binary expressions
return BOTTOM;
}
} else if (value instanceof UnopExpr) {
if (value instanceof AbstractNegExpr) {
// Handle unary minus
Value op = ((AbstractNegExpr) value).getOp();
Sign sign = signOf(op, dfv);
return sign.negate();
} else {
// We do not handle other types of binary expressions
return BOTTOM;
}
} else {
// We do not handle other types of compound expressions
return BOTTOM;
}
}
开发者ID:rohanpadhye,项目名称:vasco,代码行数:53,代码来源:SignAnalysis.java
示例14: caseMulExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
/**
* The method should update the <em>security level</em> of a {@link MulExpr}
* , but it is not possible to update the level of an expression.
*
* @param v
* The expression for which the <em>security level</em> should be
* updated.
* @see soot.jimple.ExprSwitch#caseMulExpr(soot.jimple.MulExpr)
* @throws InvalidSwitchException
* Always, because the update is not possible.
*/
@Override
public void caseMulExpr(MulExpr v) {
throw new SwitchException(getMsg("exception.analysis.switch.update_error",
this.getClass().getSimpleName(),
v.getClass().getSimpleName(),
v.toString(),
getSourceLine()));
}
开发者ID:proglang,项目名称:jgs,代码行数:20,代码来源:SecurityLevelValueWriteSwitch.java
示例15: caseMulExpr
import soot.jimple.MulExpr; //导入依赖的package包/类
/**
* Looks up the <em>security level</em> for the given binary expression and
* stores the level in {@link SecurityLevelValueReadSwitch#level}. For a
* {@link MulExpr} this is the strongest operand <em>security level</em> of
* the given binary expression.
*
* @param v
* The expression for which the <em>security level</em> should be
* looked up.
* @see soot.jimple.ExprSwitch#caseMulExpr(soot.jimple.MulExpr)
* @see SecurityLevelValueReadSwitch#handleBinaryOperation(BinopExpr)
*/
@Override
public void caseMulExpr(MulExpr v) {
handleBinaryOperation(v);
}
开发者ID:proglang,项目名称:jgs,代码行数:17,代码来源:SecurityLevelValueReadSwitch.java
注:本文中的soot.jimple.MulExpr类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论