有什么奇怪的,java的字节码中本来就有goto。
所谓java没有goto,是说java的编译器不允许源程序中使用goto,但是编译器处理跳转时,你认为应该怎么做?
看来你没有做过ASM的编程吧,所有结构化的东西在ASM里,就是JE\JNE\JG\JL\JMP这样的跳转指令,也就是goto。
java自己构建了一个平台,它的指令里没有goto,怎么实现跳转!
所谓java没有goto,是说java的编译器不允许源程序中使用goto,但是编译器处理跳转时,你认为应该怎么做?
看来你没有做过ASM的编程吧,所有结构化的东西在ASM里,就是JE\JNE\JG\JL\JMP这样的跳转指令,也就是goto。
java自己构建了一个平台,它的指令里没有goto,怎么实现跳转!
解决方案 »
- 关于finally
- 用了很久的JAVA,才发现main方法中的 String args[] 大部分时候是个摆设.
- 刚学java,想实现一下n的m次幂运算的程序!好用就结帖!200分!!!!!!!急
- jbuilder8 enterprise trial版本用注册机注册后是否和jbuilder8 enterprise一样?
- 我没多少分了,我是初学者.请问编java用什么开发工具好?是vj吗?
- 关于初始化的一点不明白的地方
- 初学者问题?谢谢!
- win2000server 环境变量设置问题
- 消息:java语言编程培训
- 如何将我要在APPLET中添加的LABEL放置到一定的位置(我的分不多)
- 通过点击按钮关闭程序的语句怎么写?谢谢
- 细微处见功夫,请大家分析一下:
不要太吃惊。java也是程序,既然是程序,就要执行cpu指令。
如果没有goto
他怎么对应汇编的jmp???本元决定一切
^@^
诸位大虾:问题是对此反编译后的 java 文件再进行编译时就会报错,错误就在 goto 处。
应该如何让它(即反编译后含 goto 的 java 文件)通过编译?
goto一直是java的关键字,但是目前Sun还没有定义他,也没有相应的jvm指令
有问题提出还是好的, 说明你很爽快。问题提的很正常啊其实呢,你用IDE的话就知道了。。比如Gel,JCreator,JBuilder,Eclipse甚至Eidtplus编辑java文件就知道了打下goto是不是颜色变了?但是呢,目前 Java 是不使用 goto ,还有const也是,这两个关键字sun jdk目前尚未使用只是保留着。你编译的文件可能不是用sun jdk写的。
名称叫:小颖超级工具系列/java 源代码反编译专家
^@^
Leemaasn(我给大家拜早年啦!新春快乐!!!)推荐一个吧
推荐一个更好的反编译器吧
哦,错了,是QBASIC的时代!
那么该原始代码是如何通过编译而成为 class 的 ?
见<<thinking in java 2e>>
decomp.rar我不知道他是否能满足你的要求,或许你已经尝试过它如果你需要,请消息我你的mail,我发给你吧
^@^
import java.util.Enumeration;
import java.util.Vector;public class lIlIIIlIlllIIlIl
{ Vector _$1;
private Enumeration _$2; public lIlIIIlIlllIIlIl()
{
_$1 = new Vector();
} public String _$1()
{
if(_$2.hasMoreElements())
return (String)_$2.nextElement();
else
return null;
} public void _$1(String s)
{
s;
this;
JVM INSTR swap ;
_$2();
JVM INSTR ifne 17;
goto _L1 _L2
_L1:
break MISSING_BLOCK_LABEL_9;
_L2:
break MISSING_BLOCK_LABEL_17;
_$1.addElement(s);
} public int _$2()
{
return _$1.size();
} public boolean _$2(String s)
{
_$4();
goto _L1
_L6:
"\t";
String s1;
s1;
JVM INSTR swap ;
indexOf();
-1;
JVM INSTR icmpeq 32;
goto _L2 _L3
_L2:
0;
s1;
JVM INSTR swap ;
"\t";
s1;
JVM INSTR swap ;
indexOf();
substring();
s1;
_L3:
s1;
s;
JVM INSTR swap ;
equals();
JVM INSTR ifeq 43;
goto _L4 _L1
_L4:
return true;
_L1:
if((s1 = _$1()) != null) goto _L6; else goto _L5
_L5:
return false;
} public void _$3()
{
_$1.removeAllElements();
} public boolean _$3(String s)
{
return _$1.removeElement(s);
} public void _$4()
{
this;
this;
JVM INSTR swap ;
_$1;
elements();
_$2;
}
}