Question

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?

Was it helpful?

Solution

None. The Java Language Specification does not provide such guarantees. You can just write your own Java bytecode using Jasmin (a bytecode assembler).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top