argon bulletin board
Факултети => Факултет по математика и информатика => Темата е започната от: JOKe в 15.03.2006, 11:54:32
-
Здрасти значи... питам тук защото незнам къде другаде да питам и та въпроса е може ли някак MANUALY да се редактира даден Java class
наприемр
имам си следния java клас :
package simple;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class SimpleC
{
public static void main(String[] args) throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int a;
a=br.read();
}
}
компилирам го и ми излиза class file
за да видя bytecode-а на този classfile трябва да направя :
java -p SimpleC >> SimpleC.bytecode
после в фаила SimpleC.bytecode
мога да видя следното съдържание.
Compiled from "SimpleC.java"
public class simple.SimpleC extends java.lang.Object{
public simple.SimpleC();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]) throws java.io.IOException;
Code:
0: new #2; //class java/io/BufferedReader
3: dup
4: new #3; //class java/io/InputStreamReader
7: dup
8: getstatic #4; //Field java/lang/System.in:Ljava/io/InputStream;
11: invokespecial #5; //Method java/io/InputStreamReader."<init>":(Ljava/io/InputStream;)V
14: invokespecial #6; //Method java/io/BufferedReader."<init>":(Ljava/io/Reader;)V
17: astore_1
18: aload_1
19: invokevirtual #7; //Method java/io/BufferedReader.read:()I
22: istore_2
23: return
}
дотук добре
Въпроса :
Въпрос 1 : мога ли да редактирам нещо по този bytecode и да го върна до class file ? и ако да то как ?
и Въпрос 2:
номерата на редовете задължителни ли са че доста ми бъркат работата
-
въпрос 2 отпада явно цифрите са нужни :)
5: goto #16
8: iload_0
9: iload_0
10: iconst_1
11: isub
12: invokestatic Faculty.fac (I)I (12)
15: imul
16: ireturn
:)))))))
-
Не, аз опрделено не искам да знам що за мазохизъм е да пипаш по bytecode-а и да се мъчиш да го компилираш, така че не ми казвай.
Иначе можеш да пробваш да ползваш Jasmin за тая работа:
http://jasmin.sourceforge.net/
Поздрави,
Николай Манчев
-
хм мерси това маи ще свърши работа иначе аз до сега бях намерил само Apache BCEL което донякъде ми върши работа