# Common Intermediate Language/Stack
## Load
### ldarg <uint16>

    Load an argument at a given position and push it onto the stack.

### ldarg.s <uint8>

    Load an argument at a given position and push it onto the stack. This takes up less space in bytecode compared to ldarg.

### ldarg.0 - ldarg.3

    Load an argument at a given position and push it onto the stack.

### ldarga <uint16>

    Load the address of an argument at a given position and push it onto the stack.

### ldarga.s <uint8>

    Load the address of an argument at a given position and push it onto the stack. This takes up less space in bytecode compared to ldarga.

### ldc.i4 <int32>

    Load a 32-bit (4-byte) integer and push it onto the stack.

### ldc.i4.s <int8>

    Load an 8-bit (1-byte) integer and push it onto the stack as 32-bit. This takes up less space in bytecode compared to ldc.i4.

### ldc.i4.0 - ldc.i4.8

    Load a 32-bit (4-byte) integer and push it onto the stack.

### ldc.i4.m1 / ldc.i4.M1

    Load -1 and push it onto the stack as 32-bit.

### ldc.i8 <int64>

    Load a 64-bit (8-byte) integer and push it onto the stack.

### ldc.r4 <float32>

    Load a 32-bit (4-byte) float and push it onto the stack.

### ldc.r8 <float64>

    Load a 64-bit (8-byte) float and push it onto the stack.

### ldelem <type>

    Load an element in an array and push it onto the stack.

### ldelem <type>

    Load an element in an array and push it onto the stack.

### ldelem.i

    Load an element in an array as a native int and push it onto the stack.

### ldelem.i1

    Load an element in an array as an int8 and push it onto the stack as an int32.

### ldelem.i2

    Load an element in an array as an int16 and push it onto the stack as an int32.

### ldelem.i4

    Load an element in an array as an int32 and push it onto the stack.

### ldelem.i8

    Load an element in an array as an int64 and push it onto the stack.

### ldelem.r4

    Load an element in an array as a float32 and push it onto the stack.

### ldelem.r8

    Load an element in an array as a float64 and push it onto the stack.

### ldelem.ref

    Load an element in an array and push it onto the stack as an object.

### ldelem.u1

    Load an element in an array as a uint8 and push it onto the stack as an int32.

### ldelem.u2

    Load an element in an array as a uint16 and push it onto the stack as an int32.

### ldelem.u4

    Load an element in an array as a uint32 and push it onto the stack as an int32.

### ldelem.u8

    Load an element in an array as a uint64 and push it onto the stack as an int64.

### ldelema <type>

    Load the address of an element as a <type> in an array and push it onto the stack.

### ldfld <type> <field>

    Load a field's value, which is a <type>, and push it onto the stack.

### ldflda <type> <field>

    Load the address of a field, which is a <type>, and push it onto the stack.

### ldflda <type> <field>

    Load the address of a field, which is a <type>, and push it onto the stack.

### ldftn <type> <method>

    Load a pointer to a method, which returns <type>, referenced by <method> and push it onto the stack.

### ldind.i

    Load a native int at an address and push it onto the stack.

### ldind.i1

    Load an int8 at an address and push it onto the stack as an int32.

### ldind.i2

    Load an int16 at an address and push it onto the stack as an int32.

### ldind.i4

    Load an int32 at an address and push it onto the stack.

### ldind.i8

    Load an int64 at an address and push it onto the stack.

### ldind.r4

    Load an float32 at an address and push it onto the stack.

### ldind.r8

    Load an float64 at an address and push it onto the stack.

### ldind.u1

    Load an unsigned int8 at an address and push it onto the stack as an int32.

### ldind.u2

    Load an unsigned int16 at an address and push it onto the stack as an int32.

### ldind.u4

    Load an unsigned int32 at an address and push it onto the stack as an int32.

### ldind.u8

    Load an unsigned int64 at an address and push it onto the stack as an int64.

### ldind.ref

    Load an object at an address and push it onto the stack.

### ldlen

    Load the length of an array and push it onto the stack.

### ldloc <uint16>

    Load the value of a local variable at a given position and push it onto the stack.

### ldloc.s <uint8>

    Load the value of a local variable at a given position and push it onto the stack. Takes up less space in bytecode compared to ldloc.

### ldloc.0 - ldloc.3

    Load the value of a local variable at a given position and push it onto the stack.

### ldloca <uint16>

    Load the address of a local variable and push it onto the stack.

### ldloca.s <uint8>

    Load the address of a local variable and push it onto the stack. Takes up less space in bytecode compared to ldloca

### ldnull

    Load null and push it onto the stack.

### ldobj <type>

    Pop an address off the stack, then push the value stored in that address.

### ldsfld <type> <field>

    Load a static field's value, which is a <type>, and push it onto the stack.

### ldsflda <type> <field>

    Load the address of a static field, which is a <type>, and push it onto the stack.

### ldstr <string>

    Load a string and push it onto the stack.

### ldtoken <token>

    Load a metadata token and push its runtime representation onto the stack.

### ldvirtftn <type> <method>

    Load the address of a virtual method, which returns <type>, and push it onto the stack.