/*
* ProGuard -- shrinking, optimization, obfuscation, and preverification
* of Java bytecode.
*
* Copyright (c) 2002-2007 Eric Lafortune (eric@graphics.cornell.edu)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package proguard.optimize.peephole;
import proguard.classfile.constant.*;
import proguard.classfile.instruction.*;
import proguard.classfile.util.InstructionSequenceMatcher;
/**
* This class contains a set of instruction sequences and their suggested
* replacements.
*
* @see InstructionSequencesReplacer
* @author Eric Lafortune
*/
public class InstructionSequenceConstants
{
public static final int X = InstructionSequenceMatcher.X;
public static final int Y = InstructionSequenceMatcher.Y;
public static final int Z = InstructionSequenceMatcher.Z;
public static final int A = InstructionSequenceMatcher.A;
public static final int B = InstructionSequenceMatcher.B;
public static final int C = InstructionSequenceMatcher.C;
public static final int D = InstructionSequenceMatcher.D;
private static final int I_32768 = 0;
private static final int I_65536 = 1;
private static final int I_16777216 = 2;
// private static final int I_0x000000ff
private static final int I_0x0000ff00 = 3;
private static final int I_0x00ff0000 = 4;
private static final int I_0xff000000 = 5;
private static final int I_0x0000ffff = 6;
private static final int I_0xffff0000 = 7;
private static final int L_M1 = 8;
private static final int L_2 = 9;
private static final int L_4 = 10;
private static final int L_8 = 11;
private static final int L_16 = 12;
private static final int L_32 = 13;
private static final int L_64 = 14;
private static final int L_128 = 15;
private static final int L_256 = 16;
private static final int L_512 = 17;
private static final int L_1024 = 18;
private static final int L_2048 = 19;
private static final int L_4096 = 20;
private static final int L_8192 = 21;
private static final int L_16384 = 22;
private static final int L_32768 = 23;
private static final int L_65536 = 24;
private static final int L_16777216 = 25;
private static final int L_4294967296 = 26;
private static final int L_0x00000000ffffffff = 27;
private static final int L_0xffffffff00000000 = 28;
private static final int F_M1 = 29;
private static final int D_M1 = 30;
private static final int FIELD_I = 31;
private static final int FIELD_L = 32;
private static final int FIELD_F = 33;
private static final int FIELD_D = 34;
private static final int NAME_AND_TYPE_I = 35;
private static final int NAME_AND_TYPE_L = 36;
private static final int NAME_AND_TYPE_F = 37;
private static final int NAME_AND_TYPE_D = 38;
private static final int TYPE_I = 39;
private static final int TYPE_L = 40;
private static final int TYPE_F = 41;
private static final int TYPE_D = 42;
public static final Constant[] PATTERN_CONSTANTS = new Constant[]
{
new IntegerConstant(32768),
new IntegerConstant(65536),
new IntegerConstant(16777216),
new IntegerConstant(0x0000ff00),
new IntegerConstant(0x00ff0000),
new IntegerConstant(0xff000000),
new IntegerConstant(0x0000ffff),
new IntegerConstant(0xffff0000),
new LongConstant(-1L),
new LongConstant(2L),
new LongConstant(4L),
new LongConstant(8L),
new LongConstant(16L),
new LongConstant(32L),
new LongConstant(64L),
new LongConstant(128L),
new LongConstant(256L),
new LongConstant(512L),
new LongConstant(1024L),
new LongConstant(2048L),
new LongConstant(4096L),
new LongConstant(8192L),
new LongConstant(16384L),
new LongConstant(32768L),
new LongConstant(65536L),
new LongConstant(16777216L),
new LongConstant(4294967296L),
new LongConstant(0x00000000ffffffffL),
new LongConstant(0xffffffff00000000L),
new FloatConstant(-1f),
new DoubleConstant(-1d),
new FieldrefConstant(X, NAME_AND_TYPE_I, null, null),
new FieldrefConstant(X, NAME_AND_TYPE_L, null, null),
new FieldrefConstant(X, NAME_AND_TYPE_F, null, null),
new FieldrefConstant(X, NAME_AND_TYPE_D, null, null),
new NameAndTypeConstant(Y, TYPE_I),
new NameAndTypeConstant(Y, TYPE_L),
new NameAndTypeConstant(Y, TYPE_F),
new NameAndTypeConstant(Y, TYPE_D),
new Utf8Constant("I"),
new Utf8Constant("J"),
new Utf8Constant("F"),
new Utf8Constant("D"),
};
public static final Instruction[][][] INSTRUCTION_SEQUENCES =
new Instruction[][][]
{
{ // nop = nothing
{
new SimpleInstruction(InstructionConstants.OP_NOP),
},{
// Nothing.
},
},
{ // i = i = nothing
{
new VariableInstruction(InstructionConstants.OP_ILOAD, X),
new VariableInstruction(InstructionConstants.OP_ISTORE, X),
},{
// Nothing.
},
},
{ // l = l = nothing
{
new VariableInstruction(InstructionConstants.OP_LLOAD, X),
new VariableInstruction(InstructionConstants.OP_LSTORE, X),
},{
// Nothing.
},
},
{ // f = f = nothing
{
new VariableInstruction(InstructionConstants.OP_FLOAD, X),
new VariableInstruction(InstructionConstants.OP_FSTORE, X),
},{
// Nothing.
},
},
{ // d = d = nothing
{
new VariableInstruction(InstructionConstants.OP_DLOAD, X),
new VariableInstruction(InstructionConstants.OP_DSTORE, X),
},{
// Nothing.
},
},
{ // a = a = nothing
{
new VariableInstruction(InstructionConstants.OP_ALOAD, X),
new VariableInstruction(InstructionConstants.OP_ASTORE, X),
},{
// Nothing.
},
},
{ // istore/istore = pop/istore
{
new VariableInstruction(InstructionConstants.OP_ISTORE, X),
new VariableInstruction(InstructionConstants.OP_ISTORE, X),
},{
new SimpleInstruction(InstructionConstants.OP_POP),
new VariableInstruction(InstructionConstants.OP_ISTORE, X),
},
},
{ // lstore/lstore = pop2/lstore
{
new
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
代码混淆工具proguard4.2.rar (609个子文件)
style.css 2KB
style.css 1KB
screenshots_gui_small.gif 157KB
screenshot_gui1.gif 42KB
screenshot_gui7.gif 41KB
screenshot_gui4.gif 40KB
screenshot_gui6.gif 36KB
screenshot_gui3.gif 36KB
screenshot_gui2.gif 36KB
screenshot_gui5.gif 35KB
screenshot_gui8.gif 31KB
vtitle.gif 26KB
screenshot_console_small.gif 19KB
screenshot_console.gif 18KB
steel.gif 3KB
title.gif 3KB
drop1.gif 803B
drop2.gif 620B
drop3.gif 175B
arrow.gif 112B
checkmark.gif 63B
usage.html 51KB
examples.html 42KB
alternatives.html 25KB
troubleshooting.html 24KB
ant.html 21KB
gui.html 19KB
downloads.html 19KB
examples.html 17KB
GPL.html 16KB
refcard.html 16KB
FAQ.html 11KB
introduction.html 7KB
results.html 5KB
testimonials.html 4KB
main.html 4KB
feedback.html 4KB
limitations.html 3KB
acknowledgements.html 3KB
usage.html 2KB
package.html 2KB
screenshots.html 2KB
sections.html 2KB
introduction.html 2KB
sections.html 2KB
license.html 2KB
wtk.html 2KB
index.html 2KB
quality.html 2KB
GPL_exception.html 2KB
index.html 1KB
package.html 664B
index.html 600B
title.html 449B
package.html 379B
package.html 162B
package.html 153B
package.html 147B
package.html 132B
package.html 129B
package.html 121B
package.html 104B
package.html 99B
package.html 94B
package.html 93B
package.html 91B
package.html 89B
package.html 87B
package.html 85B
package.html 84B
package.html 83B
package.html 82B
package.html 82B
package.html 81B
package.html 69B
package.html 67B
package.html 65B
package.html 64B
package.html 64B
favicon.ico 7KB
proguard.jar 558KB
proguardgui.jar 134KB
annotations.jar 6KB
retrace.jar 5KB
InstructionSequenceConstants.java 118KB
EvaluationSimplifier.java 92KB
ProGuardGUI.java 77KB
ConfigurationParser.java 50KB
ClassUtil.java 47KB
PartialEvaluator.java 39KB
Processor.java 37KB
ProgramClassReader.java 36KB
CodeAttributeEditor.java 36KB
ClassPrinter.java 33KB
UsageMarker.java 29KB
ConstantPoolEditor.java 29KB
CodeAttributeComposer.java 29KB
SimplifiedVisitor.java 27KB
DynamicMemberReferenceInitializer.java 26KB
ProgramClassWriter.java 25KB
共 609 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
xhf1234
- 粉丝: 6
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于SimPy和贝叶斯优化的流程仿真系统.zip
- (源码)基于Java Web的个人信息管理系统.zip
- (源码)基于C++和OTL4的PostgreSQL数据库连接系统.zip
- (源码)基于ESP32和AWS IoT Core的室内温湿度监测系统.zip
- (源码)基于Arduino的I2C协议交通灯模拟系统.zip
- coco.names 文件
- (源码)基于Spring Boot和Vue的房屋租赁管理系统.zip
- (源码)基于Android的饭店点菜系统.zip
- (源码)基于Android平台的权限管理系统.zip
- (源码)基于CC++和wxWidgets框架的LEGO模型火车控制系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功