我正在进行业余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
有什么想法吗?