我正在研究一个业余 JVM 实现,我正在努力确保我对规范中的所有操作码都有测试覆盖率。我已经把它归结为最后几个,但nop
一直swap
在逃避我。例如,这是一个可能使用的简单函数swap
:
static int do_swap() {
int a = 56;
int b = 32;
return b%a;
}
但是由 产生的字节码javac 1.6
避免了交换来代替本地存储:
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
有任何想法吗?