|
bfixup | ||||||||
· Operation | Fix up int8 variable | |||||||
· Format |
| |||||||
· Direct Format |
| |||||||
· Forms | bfixup = 25 (0x19) | |||||||
· Description | Retrieve the contents of position N in the local variable frame, truncate the value to 8 bits and write it back to the same variable. The destination is aligned at the start of the stack word that contains the variable. | |||||||
· Notes | This instruction is used to align int8 and
uint8 values that were passed as arguments to the
current method.The result is guaranteed to be aligned on the start of a stack word so that waddr M will push the correct address of the byte. This instruction is not normally required on little-endian platforms, but it is definitely required on big-endian platforms.
The contents of an |
bload | ||||
· Operation | Load uint8 variable
onto the stack | |||
· Format |
| |||
· Direct Format |
| |||
· Forms | bload = 250 (0xFA) | |||
· Stack | ... => ..., value | |||
· Description | Load the uint8 variable from position
N in the local variable frame and push its value
onto the stack. | |||
· Notes | This instruction is a quicker variant of
waddr N, bread.
This instruction can also be used to load |
bstore | ||||
· Operation | Store the top of stack into uint8
variable | |||
· Format |
| |||
· Direct Format |
| |||
· Forms | bstore = 251 (0xFB) | |||
· Stack | ..., value => ... | |||
· Description | Pop value from the stack as type int32
and store it at position N in the local variable frame,
truncated to the type uint8 .
| |||
· Notes | This instruction is a quicker variant of
waddr N, bwrite_r.
This instruction can also be used to store |
dfixup | ||||||||
· Operation | Fix up float64 variable | |||||||
· Format |
| |||||||
· Direct Format |
| |||||||
· Forms | dfixup = 28 (0x1C) | |||||||
· Description | Retrieve the contents of position N in the
local variable frame as type native float , truncate
the value to float64 and write it back to the same
variable. The destination is aligned at the start of the stack
word that contains the variable. | |||||||
· Notes | This instruction is used to convert native float
values that were passed as arguments to the current method into
the float64 for internal local variable access.
The result is guaranteed to be aligned on the start of a stack
word so that waddr M will push the correct address of
the
The contents of a |
ffixup | ||||||||
· Operation | Fix up float32 variable | |||||||
· Format |
| |||||||
· Direct Format |
| |||||||
· Forms | ffixup = 27 (0x1B) | |||||||
· Description | Retrieve the contents of position N in the
local variable frame as type native float , truncate
the value to float32 and write it back to the same
variable. The destination is aligned at the start of the stack
word that contains the variable. | |||||||
· Notes | This instruction is used to convert native float
values that were passed as arguments to the current method into
the float32 for internal local variable access.
The result is guaranteed to be aligned on the start of a stack
word so that waddr M will push the correct address of
the
The contents of a |
iload | ||||||||
· Operation | Load int32 variable
onto the stack | |||||||
· Format |
| |||||||
· Direct Format |
| |||||||
· Forms | iload = 5 (0x05) | |||||||
· Stack | ... => ..., value | |||||||
· Description | Load the int32 variable from position
N in the local variable frame and push its value
onto the stack. | |||||||
· Notes | This instruction can also be used to load variables
of type uint32 onto the stack. |
iload_<n> | |||
· Operation | Load int32 variable n
onto the stack | ||
· Format |
| ||
· Direct Format |
| ||
· Forms | iload_0 = 1 (0x01) iload_1 = 2 (0x02) iload_2 = 3 (0x03) iload_3 = 4 (0x04) | ||
· Stack | ... => ..., value | ||
· Description | Load the int32 variable from position
n in the local variable frame and push its value
onto the stack. | ||
· Notes | These instructions can also be used to load variables
of type uint32 onto the stack. |
istore | ||||||||
· Operation | Store the top of stack into int32
variable | |||||||
· Format |
| |||||||
· Direct Format |
| |||||||
· Forms | istore = 15 (0x0F) | |||||||
· Stack | ..., value => ... | |||||||
· Description | Pop value from the stack as type int32
and store it at position N in the local variable frame.
| |||||||
· Notes | This instruction can also be used to store to variables
of type uint32 . |
istore_<n> | |||
· Operation | Store the top of stack into int32
variable n | ||
· Format |
| ||
· Direct Format |
| ||
· Forms | istore_0 = 11 (0x0B) istore_1 = 12 (0x0C) istore_2 = 13 (0x0D) istore_3 = 14 (0x0E) | ||
· Stack | ..., value => ... | ||
· Description | Pop value from the stack as type int32
and store it at position n in the local variable frame.
| ||
· Notes | These instructions can also be used to store to variables
of type uint32 . |
maddr | ||||||||
· Operation | Load the address of a stack word onto the stack | |||||||
· Format |
| |||||||
· Direct Format |
| |||||||
· Forms | maddr = 24 (0x18) | |||||||
· Stack | ... => ..., pointer | |||||||
· Description | Set pointer to the address of the word at
N positions down the stack. Push pointer
onto the stack as type ptr . N == 1 indicates
the address of the top-most stack word prior to the operation.
| |||||||
· Notes | This instruction is typically used to get the address of a managed value on the stack, so that the value can be manipulated with pointer operations. |
mk_local_1 | |||
· Operation | Make one local variable slot | ||
· Format |
| ||
· Direct Format |
| ||
· Forms | mk_local_1 = 29 (0x1D) | ||
· Stack | ... => ..., zero | ||
· Description | Push a single zeroed word onto the stack. | ||
· Notes | This instruction is used to allocate local variable space at the start of a method. |
mk_local_2 | |||
· Operation | Make two local variable slots | ||
· Format |
| ||
· Direct Format |
| ||
· Forms | mk_local_2 = 30 (0x1E) | ||
· Stack | ... => ..., zero1, zero2 | ||
· Description | Push two zeroed words onto the stack. | ||
· Notes | This instruction is used to allocate local variable space at the start of a method. |
mk_local_3 | |||
· Operation | Make three local variable slots | ||
· Format |
| ||
· Direct Format |
| ||
· Forms | mk_local_3 = 31 (0x1F) | ||
· Stack | ... => ..., zero1, zero2, zero3 | ||
· Description | Push three zeroed words onto the stack. | ||
· Notes | This instruction is used to allocate local variable space at the start of a method. |
mk_local_n | ||||||||
· Operation | Make N local variable slots | |||||||
· Format |
| |||||||
· Direct Format |
| |||||||
· Forms | mk_local_n = 32 (0x20) | |||||||
· Stack | ... => ..., zero1, ..., zeroN | |||||||
· Description | Push N zeroed words onto the stack. | |||||||
· Notes | This instruction is used to allocate local variable space at the start of a method. |
mload | ||||||||||
· Operation | Load multiple stack words from a variable onto the stack | |||||||||
· Format |
| |||||||||
· Direct Format |
| |||||||||
· Forms | mload = 21 (0x15) | |||||||||
· Stack | ... => ..., value1, ..., valueM | |||||||||
· Description | Load the M stack words from position N in the local variable frame and push them onto the stack. |
mstore | ||||||||||
· Operation | Store multiple stack words from the stack to a variable | |||||||||
· Format |
| |||||||||
· Direct Format |
| |||||||||
· Forms | mstore = 22 (0x16) | |||||||||
· Stack | ..., value1, ..., valueM => ... | |||||||||
· Description | Pop the M stack words from the top of the stack and store them at position N in the local variable frame. |
pload | ||||||||
· Operation | Load ptr variable
onto the stack | |||||||
· Format |
| |||||||
· Direct Format |
| |||||||
· Forms | pload = 10 (0x0A) | |||||||
· Stack | ... => ..., value | |||||||
· Description | Load the ptr variable from position
N in the local variable frame and push its value
onto the stack. | |||||||
· Notes | This instruction must not be confused with iload.
Values of type int32 and ptr do not
necessarily occupy the same amount of space in a stack word on
all platforms. |
pload_<n> | |||
· Operation | Load ptr variable n
onto the stack | ||
· Format |
| ||
· Direct Format |
| ||
· Forms | pload_0 = 6 (0x06) pload_1 = 7 (0x07) pload_2 = 8 (0x08) pload_3 = 9 (0x09) | ||
· Stack | ... => ..., value | ||
· Description | Load the ptr variable from position
n in the local variable frame and push its value
onto the stack. | ||
· Notes | These instructions must not be confused with the
iload_<n> instructions. Values of type
int32 and ptr do not necessarily
occupy the same amount of space in a stack word on
all platforms. |
pstore | ||||||||
· Operation | Store the top of stack into ptr
variable | |||||||
· Format |
| |||||||
· Direct Format |
| |||||||
· Forms | pstore = 20 (0x14) | |||||||
· Stack | ..., value => ... | |||||||
· Description | Pop value from the stack as type ptr
and store it at position N in the local variable frame.
| |||||||
· Notes | This instructions must not be confused with istore.
Values of type int32 and ptr do not
necessarily occupy the same amount of space in a stack word on
all platforms. |
pstore_<n> | |||
· Operation | Store the top of stack into ptr
variable n | ||
· Format |
| ||
· Direct Format |
| ||
· Forms | pstore_0 = 16 (0x10) pstore_1 = 17 (0x11) pstore_2 = 18 (0x12) pstore_3 = 19 (0x13) | ||
· Stack | ..., value => ... | ||
· Description | Pop value from the stack as type ptr
and store it at position n in the local variable frame.
| ||
· Notes | These instructions must not be confused with the
istore_<n> instructions. Values of type
int32 and ptr do not necessarily
occupy the same amount of space in a stack word on
all platforms. |
sfixup | ||||||||
· Operation | Fix up int16 variable | |||||||
· Format |
| |||||||
· Direct Format |
| |||||||
· Forms | sfixup = 26 (0x1A) | |||||||
· Description | Retrieve the contents of position N in the local variable frame, truncate the value to 16 bits and write it back to the same variable. The destination is aligned at the start of the stack word that contains the variable. | |||||||
· Notes | This instruction is used to align int16 and
uint16 values that were passed as arguments to the
current method.The result is guaranteed to be aligned on the start of a stack word so that waddr M will push the correct address of the 16 bit value. This instruction is not normally required on little-endian platforms, but it is definitely required on big-endian platforms.
The contents of an |
waddr | ||||||||
· Operation | Load the address of a variable onto the stack | |||||||
· Format |
| |||||||
· Direct Format |
| |||||||
· Forms | waddr = 23 (0x17) | |||||||
· Stack | ... => ..., pointer | |||||||
· Description | Set pointer to the address of the word at
position N in the local variable frame. Push pointer
onto the stack as type ptr . |
Copyright © Southern
Storm Software Pty Ltd 2002
Licensed under GNU FDL