Tôi đang tìm các triển khai hiện có của ý tưởng sau đây: giả sử ai đó muốn viết các mã byte "inline assembly" bên trong một chương trình Java bình thường (các ứng dụng liên quan nhất sẽ liên quan đến hướng dẫn động) nếu không có sẵn trong Java). Một cách để làm điều này sẽ như sau:"Inline assembly" cho các mã byte Java
void foo(boolean b) {
Label l1 = Asm.label();
Label l2 = Asm.label();
int i = Asm.no_int();
Asm._const(0);
Asm.store(i);
l1.bind();
Asm.load(i);
Asm.push(10);
Asm.if_cmpge(l2);
Asm.getstatic("java/lang/System", "out", "Ljava/io/PrintStream");
Asm.load(i);
Asm.invokevirtual("java/io/PrintStream", "println", "(I)V");
Asm.inc(i);
Asm._goto(l1);
l2.bind();
Asm._return();
}
hướng dẫn được mã hóa như các cuộc gọi API, sau đó chúng tôi cần phải chạy một trình biên dịch java bình thường, và sau đó để gửi quá trình mã byte và thay thế các cuộc gọi API với hướng dẫn thực tế.
P.S. Tôi biết ASMifier của ASM Framework, nó không giải quyết được vấn đề nêu trên.
Chúng ta không có Giao diện bản địa Java cho điều này? – user2357112
JNI dành cho các giao diện giữa "triển khai gốc" (được thực hiện trong C, C++), anh ta yêu cầu "bytecode nội tuyến" – morgano
... oh! Intecode nội tuyến. Tôi nghĩ rằng đây là một câu hỏi về nội tuyến lắp ráp thực tế trong một chương trình Java. – user2357112