I'm working on an amateur JVM implementation, and I'm trying to make sure I have test coverage for all of the opcodes in the spec. I've gotten it down to the last few, but nop
and swap
have been eluding me. For example, here's a simple function that might use swap
:
static int do_swap() {
int a = 56;
int b = 32;
return b%a;
}
But the bytecode produced by javac 1.6
avoids swapping in lieu of local storage:
static int do_swap();
Code:
0: bipush 56
2: istore_0
3: bipush 32
5: istore_1
6: iload_1
7: iload_0
8: irem
9: ireturn
Any ideas?
None. The Java Language Specification does not provide such guarantees. You can just write your own Java bytecode using Jasmin (a bytecode assembler).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With