ckarray_load_i4 | |
·
Operation | Check an array load with an int32
index |
·
Format | |
·
Direct Format | |
·
Forms | ckarray_load_i4 = 190 (0xBE)
|
·
Stack | ..., array, index => ..., pointer, index |
· Description | Retrieve array and index
from the stack (without popping them) as the types ptr
and int32 respectively. Throw a
System.IndexOutOfRangeException if index is
out of range. Otherwise set pointer to the address of
the first element in the array. |
· Notes | This instruction is used to assist in obtaining the address
of an array element. The program will normally follow this
instruction with an imul operation to adjust the index
for the size of the elements, followed by padd_i4 to compute
the final element address. This instruction sequence can also be
used in combination with mread to fetch odd-sized array
elements by pointer. |
· Exceptions | System.NullReferenceException -- Raised if
array is null .
System.IndexOutOfRangeException -- Raised if
index is not within the array's bounds.
|
ckarray_load_i8 | |
·
Operation | Check an array load with an int64
index |
·
Format | |
·
Direct Format | |
·
Forms | ckarray_load_i8 = 191 (0xBF)
|
·
Stack | ..., array, index => ..., pointer, index |
· Description | Retrieve array and index
from the stack (without popping them) as the types ptr
and int64 respectively. Throw a
System.IndexOutOfRangeException if index is
out of range. Otherwise set pointer to the address of
the first element in the array. |
· Notes | This instruction is used to assist in obtaining the address
of an array element. The program will normally follow this
instruction with an lmul operation to adjust the index
for the size of the elements, followed by padd_i8 to compute
the final element address. This instruction sequence can also be
used in combination with mread to fetch odd-sized array
elements by pointer. |
· Exceptions | System.NullReferenceException -- Raised if
array is null .
System.IndexOutOfRangeException -- Raised if
index is not within the array's bounds.
|
ckarray_store_i8 | |
·
Operation | Check an array store that uses an int64
index |
·
Format | |
·
Direct Format | |
·
Forms | ckarray_store_i8 = 192 (0xC0)
|
·
Stack | ..., array, index, value => ..., pointer, value |
· Description | Pop array, index, and value
from the stack as the types ptr , int64 ,
and word[N] respectively (where word
is the type of a stack word). Throw a
System.IndexOutOfRangeException if index is
out of range. Otherwise set pointer to the address of
the index'th element in the array. The size of each
array element is M bytes. The pointer and
value are pushed onto the stack. |
· Notes | This instruction is used to assist in storing an element
to an array when the CIL index had the type I on a 64-bit platform.
This instruction sequence is typically followed by a *write
instruction to store value at pointer. |
· Exceptions | System.NullReferenceException -- Raised if
array is null .
System.IndexOutOfRangeException -- Raised if
index is not within the array's bounds.
|
dread_elem | |
·
Operation | Read float64 value from array |
·
Format | |
·
Direct Format | |
·
Forms | dread_elem = 255, 16 (0xFF, 0x10)
|
·
Stack | ..., array, index => ..., value |
· Description | Pop array and index from
the stack as the types ptr and int32
respectively. Load the float64 value from position
index in array, extend it to native float ,
and push it onto the stack. |
· Exceptions | System.NullReferenceException -- Raised if
array is null .
System.IndexOutOfRangeException -- Raised if
index is not within the array's bounds.
|
dwrite_elem | |
·
Operation | Write float64 value to array |
·
Format | |
·
Direct Format | |
·
Forms | dwrite_elem = 255, 19 (0xFF, 0x13)
|
·
Stack | ..., array, index, value => ... |
· Description | Pop array, index, and
value from the stack as the types ptr ,
int32 , and native float respectively.
The value is truncated to float64 and written
at position index in array. |
· Exceptions | System.NullReferenceException -- Raised if
array is null .
System.IndexOutOfRangeException -- Raised if
index is not within the array's bounds.
|
fread_elem | |
·
Operation | Read float32 value from array |
·
Format | |
·
Direct Format | |
·
Forms | fread_elem = 255, 15 (0xFF, 0x0F)
|
·
Stack | ..., array, index => ..., value |
· Description | Pop array and index from
the stack as the types ptr and int32
respectively. Load the float32 value from position
index in array, extend it to native float ,
and push it onto the stack. |
· Exceptions | System.NullReferenceException -- Raised if
array is null .
System.IndexOutOfRangeException -- Raised if
index is not within the array's bounds.
|
fwrite_elem | |
·
Operation | Write float32 value to array |
·
Format | |
·
Direct Format | |
·
Forms | fwrite_elem = 255, 18 (0xFF, 0x12)
|
·
Stack | ..., array, index, value => ... |
· Description | Pop array, index, and
value from the stack as the types ptr ,
int32 , and native float respectively.
The value is truncated to float32 and written
at position index in array. |
· Exceptions | System.NullReferenceException -- Raised if
array is null .
System.IndexOutOfRangeException -- Raised if
index is not within the array's bounds.
|
get2d | |
·
Operation | Prepare for a two-dimensional array get operation |
·
Format | |
·
Direct Format | |
·
Forms | get2d = 255, 20 (0xFF, 0x14)
|
·
Stack | ..., array, index1, index2 => ..., address |
· Description | Pop array, index1, and
index2 from the stack as the types ptr ,
int32 , and int32 respectively.
The address of array[index1, index2] is pushed onto
the stack as type ptr . |
· Notes | This instruction is normally followed by a *read
instruction to read the contents of the array element. |
· Exceptions | System.NullReferenceException -- Raised if
array is null .
System.IndexOutOfRangeException -- Raised if
index1 or index2 is not within the array's
bounds.
|
lread_elem | |
·
Operation | Read int64 value from array |
·
Format | |
·
Direct Format | |
·
Forms | lread_elem = 255, 14 (0xFF, 0x0E)
|
·
Stack | ..., array, index => ..., value |
· Description | Pop array and index from
the stack as the types ptr and int32
respectively. Load the int64 value from position
index in array, and push it onto the stack. |
· Notes | This instruction can also be used to read values of
type uint64 . |
· Exceptions | System.NullReferenceException -- Raised if
array is null .
System.IndexOutOfRangeException -- Raised if
index is not within the array's bounds.
|
lwrite_elem | |
·
Operation | Write int64 value to array |
·
Format | |
·
Direct Format | |
·
Forms | lwrite_elem = 255, 17 (0xFF, 0x11)
|
·
Stack | ..., array, index, value => ... |
· Description | Pop array, index, and
value from the stack as the types ptr ,
int32 , and int64 respectively.
The value is written at position index
in array. |
· Notes | This instruction can also be used to write values of
type uint64 . |
· Exceptions | System.NullReferenceException -- Raised if
array is null .
System.IndexOutOfRangeException -- Raised if
index is not within the array's bounds.
|
set2d | |
·
Operation | Prepare for a two-dimensional array set operation |
·
Format | |
·
Direct Format | |
·
Forms | set2d = 255, 21 (0xFF, 0x15)
|
·
Stack | ..., array, index1, index2, value => ..., address, value |
· Description | Remove array, index1, and
index2 from the stack as the types ptr ,
int32 , and int32 respectively.
The address of array[index1, index2] is pushed into
the stack as type ptr just below value.
The operand N indicates the number of stack words that
are occupied by value. |
· Notes | This instruction is normally followed by a *write
instruction to write the contents of the array element. |
· Exceptions | System.NullReferenceException -- Raised if
array is null .
System.IndexOutOfRangeException -- Raised if
index1 or index2 is not within the array's
bounds.
|