CS201J: Engineering Software, Fall 2003
|
Notes: Tuesday 4 November 2003
Schedule
- Tuesday, 11 November: PS5 Part 2
- Tuesday, 18 November: No class
- Tuesday, 25 November: PS6 Due
- Tuesday, 2 December: Exam 2 Out
- Friday, 5 December: Exam 2
Selected JavaVM Instructions
Opcode Mnemonic Description 0 nop Does nothing 1 aconst_null Push null on the stack 3 iconst_0 Push int 0 on the stack 4 iconst_1 Push int 1 on the stack 8 iconst_5 Push int 5 on the stack 9 lconst_0 Push long 0 on the stack ... ... ... 21 iload varnum Push the int value in local variable varnum on the stack 22 lload varnum Push the long value in local variable varnum on the stack 23 fload varnum Push the float value in local variable varnum on the stack 24 dload varnum Push the double value in local variable varnum on the stack 25 aload varnum Push the object reference in local variable varnum on the stack 26 iload_0 Push the int value in local variable 0 on the stack 27 iload_1 Push the int value in local variable 1 on the stack ... ... ... 45 aload_3 Push the object reference in local variable 3 on the stack ... ... ... 54 istore varnum Store the int value at the top of the stack in local variable varnum and pop it from stack 58 astore varnum Store the object reference at the top of the stack in local variable varnum and pop it from stack ... ... ... 45 aload_3 Push the object reference in local variable 3 on the stack ... ... ... 87 pop Pops the top (single word) off the stack 88 pop2 Pops the top two words off the stack 89 dup Pops the top of the stack, and pushes that value twice ... ... ... 96 iadd Pops two ints off the stack, and pushes their sum 97 ladd Pops two longs off the stack, and pushes their sum 104 imul Pops two ints off the stack, and pushes their product 116 ineg Pops an int off the stack, and pushes its negation 153 ifeq label Pops an int off the stack, if it is zero, jump to label 154 ifne label Pops an int off the stack, if it is not zero, jump to label 165 if_acmpeq label Pops two object references off the stack, if they are equal (same object), jump to label 167 goto label Causes execution to jump to label 172 ireturn Pops an int off the stack, and pushes it onto the caller's stack. Discards all other items on this method's stack. Causes execution to contion at the call site. 180 getfield field Pops an object reference from the stack, and pushes the value of the specified field of that object on the stack 181 putfield field Pops a value and an object reference from the stack, and store the value in the specified field of that object 182 invokevirtual method Pops an object reference from the stack, and invokes the specified method on that object; pops the parameters from the stack, and stores them in local variables 183 invokespecial method Pops an object reference from the stack, and invokes the specified method on that object; pops the parameters from the stack, and stores them in local variables. (Used for constructors, private methods and super invocations.) 184 invokestatic method Invokes the specified static method; pops the parameters from the stack, and stores them in local variables 187 new class Pushes an object reference to a new object of type class 188 newarray type Pops an integer off the stack, and pushes a reference to a new array of the specified type and the size of the popped integer ... ... ... 201 jsr_w label Jump to a subroutine using a wide offset (useful for exception handling) For a complete description of all the JavaVM instructions, see The JavaTM Virtual Machine Specification.
To examine the byte codes the compiler produces for a class:
- Start a DOS shell by selecting "Run" from the Start menu and entering "cmd"
- cd to the directory containing the class file
- java -p classname
Method void main(java.lang.String[]) 0 iconst_2 1 istore_1 2 iconst_3 3 istore_2 4 iload_1 5 iload_2 6 iadd 7 istore_3 8 getstatic #2 <Field java.io.PrintStream err> 11 new #3 <Class java.lang.StringBuffer> 14 dup 15 invokespecial #4 <Method java.lang.StringBuffer()> 18 ldc #5 <String "c: "> 20 invokevirtual #6 <Method java.lang.StringBuffer append(java.lang.String)> 23 iload_3 24 invokevirtual #7 <Method java.lang.StringBuffer append(int)> 27 invokevirtual #8 <Method java.lang.String toString()> 30 invokevirtual #9 <Method void println(java.lang.String)> 33 return
University of Virginia Department of Computer Science CS 201J: Engineering Software |
Sponsored by the National Science Foundation |
cs201j-staff@cs.virginia.edu |