MSIL Instruction Set

2024-03-15 19:08
文章标签 set instruction msil

本文主要是介绍MSIL Instruction Set,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MSIL Instruction Set

Base Instructions

Instruction

Description

Stack Transition

1

add

add two values, returning a new value

…, value1, value2à…, result

2

add.ovf.<signed>

add integer value with overflow check

…, value1, value2à…, result

3

and

bitwise AND

…, value1, value2 à…, result

4

arglist

get argument list

à …, argListHandle

5

beq.<length>

branch on equal

…, value1, value2 à

6

bge.<length>

branch on greater than or equal to

…, value1, value2 à

7

bge.un.<length>

branch on greater/equal, unsigned or unordered

…, value1, value2 à

8

bgt.<length>

branch on greater than

…, value1, value2 à

9

bgt.un<length>

branch on greater than, unsigned or unordered

…, value1, value2 à

10

ble.<length>

branch on less than or equal to

…, value1, value2 à

11

ble..un<length>

branch on less/equal, unsigned or unordered

…, value1, value2 à

12

blt.<length>

branch on less than

…, value1, value2 à

13

blt.un.<length>

branch on less than, unsigned or unordered

…, value1, value2 à

14

bne.un<length>

branch on not equal or unorded

…, value1, value2 à

15

br.<length>

unconditional branch

…, à

16

break

breakpoint instruction

…, à

17

brfalse.<length>

branch on false, null, or zero

…, value à

18

brtrue.<length>

branch on non-false or non-null

…, value à

19

call

call a method

…, arg1, arg2 … argn à …, retVal (not always returned)

20

calli

indirect method call

…, arg1, arg2 … argn, ftn à …, retVal (not always returned)

21

ceq

compare equal

…, value1, value2à…, result

22

cgt

compare greater than

…, value1, value2à…, result

23

cgt.un

compare greater than, unsigned or unordered

…, value1, value2à…, result

24

ckfinite

check for a finite real number

…, value à …, value

25

clt

compare less than

…, value1, value2à…, result

26

clt.un

compare less than, unsigned or unordered

…, value1, value2à…, result

27

conv.<to type>

data conversion

…, value à …, result

28

conv.ovf<to type>

data conversion with overflow detection

…, value à …, result

29

conv.ovf.<to type>.un

unsigned data conversion with overflow detection

…, value à …, result

30

cpblk

copy data from memory to memory

…, destaddr, srcaddr, size à

31

div

divide values

…, value1, value2à…, result

32

div.un

divide integer values, unsigned

…, value1, value2à…, result

33

dup

duplicate the top value of the stack

…, value à …, value, value

34

endfilter

end filter clause of SEH

…, value à

35

endfinally

end the finally or fault clause of exception block

à

36

initblk

initialize a block of memory to a value

…, addr, value, size à

37

jmp

jump to method

à

38

ldarg.<length>

load argument onto the stack

à …, value

39

ldarga.<length>

load an argument address

…, à …, address of argument number argNum

40

ldc.<type>

load numeric constant

à …, num

41

ldftn

load method pointer

à …, ftn

42

ldind.<type>

load value indirect onto the stack

…, addr à …, value

43

ldloc

load local variable onto the stack

à …, value

44

ldloca.<length>

load local variable address

à …, address

45

ldnull

load a null pointer

à …, null value

46

leave.<length>

exit a protected region of code

…, à

47

localloc

allocate space in the local dynamic memory pool

size à address

48

mul

multiply values

…, value1, value2 à …, result

49

mul.ovf<type>

multiply integer values with overflow check

…, value1, value2 à …, result

50

neg

negate

…, value à …, result

51

nop

no operation

…, à …,

52

not

bitwise complement

…, value à …, result

53

or

bitwise OR

…, value1, value2 à …, result

54

pop

remove the top element of the stack

…, value à

55

rem

compute the remainder

…, value1, value2 à …, result

56

rem.un

compute integer remainder, unsigned

…, value1, value2 à …, result

57

ret

return from method

retVal on callee evaluation stack (not always present) à

…, retVal on caller evaluation stack (not always present)

58

shl

shift integer left

…, value, shiftAmount à …, result

59

shr

shift integer right

…, value, shiftAmount à …, result

60

shr.un

shift integer right, unsigned

…, value, shiftAmount à …, result

61

starg.<length>

store a value in an argument slot

…, value à …,

62

stind.<type>

store value indirect from stack

…, addr, val à

63

stloc

pop value from stack to local variable

…, value à

64

sub

substract numeric values

…, value1, value2 à …, result

65

sub.ovf.<type>

substract integer values, checking for overflow

…, value1, value2 à …, result

66

switch

table switch on value

…, value à …,

67

xor

bitwise XOR

..., value1, value2 à ..., result


Object Model Instructions

Instruction

Description

Stack Transition

1

box

convert value type to object reference

…, valueType à …, obj

2

callvirt

call a method associated, a runtime, with an object

…, obj, arg1, … argN à …, returnVal (not always returned)

3

cast class

cast an object to a class

…, obj à …, obj2

4

cpobj

copy a value type

…, destValObj, srcValObj à …,

5

initobj

Initialize a value type

…,addrOfValObj à …,

6

isinst

test if an object is is an instance of a class or interface

…, obj à …, result

7

ldelem.<type>

load an element fo an array

…, array, index à …, value

8

ldelema

load address of an element of an array

…, array, index à …, address

9

ldfld

load field of an object

…, obj à …, value

10

ldflda

load field address

…, obj à …, address

11

ldlen

load the length of an array

…, array à …, length

12

ldobj

copy value type to the stack

…, addrOfValObj à …, valObj

13

ldsfld

load static field of a class

…, à …, value

14

ldsflda

load static field address

…, à …, address

15

ldstr

load a literal string

…, à …, string

16

ldtoken

load the runtime representation of metadata token

à …, RuntimeHandle

17

ldvirtfn

load a virtual method pointer

… object à …, ftn

18

mkrefany

push a typed reference on the stack

…, ptr à …, typedRef

19

newarr

Create a zero-base, on-dimensional array

…, numElems à …, array

20

newobj

create a new object

…, arg1, … argN à …, obj

21

refanytype

load the type out of a typed reference

…, TypedRef à …, type

22

refanyval

load the address out of a typed reference

…, TypedRef à …, address

23

rethrow

rethrow the current exception

…, à …,

24

sizeof

load the size in bytes of a value type

…, à …, size (4 bytes, unsigned)

25

stelem.<type>

store an element of an array

…, array, index, value à …,

26

stfld

store into a field of an object

…, obj, value à …,

27

stobj

store a value type from the stack into memory

…, addr, valObj à …,

28

stsfld

store a static field of class

…, val à …,

29

throw

throw an exception

…, object à …,

30

unbox

convert boxed value type to its raw form

这篇关于MSIL Instruction Set的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/812976

相关文章

poj 3050 dfs + set的妙用

题意: 给一个5x5的矩阵,求由多少个由连续6个元素组成的不一样的字符的个数。 解析: dfs + set去重搞定。 代码: #include <iostream>#include <cstdio>#include <set>#include <cstdlib>#include <algorithm>#include <cstring>#include <cm

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否

论文翻译:ICLR-2024 PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS

PROVING TEST SET CONTAMINATION IN BLACK BOX LANGUAGE MODELS https://openreview.net/forum?id=KS8mIvetg2 验证测试集污染在黑盒语言模型中 文章目录 验证测试集污染在黑盒语言模型中摘要1 引言 摘要 大型语言模型是在大量互联网数据上训练的,这引发了人们的担忧和猜测,即它们可能已

多路转接之select(fd_set介绍,参数详细介绍),实现非阻塞式网络通信

目录 多路转接之select 引入 介绍 fd_set 函数原型 nfds readfds / writefds / exceptfds readfds  总结  fd_set操作接口  timeout timevalue 结构体 传入值 返回值 代码 注意点 -- 调用函数 select的参数填充  获取新连接 注意点 -- 通信时的调用函数 添加新fd到

Android set Tag, findViewWithTag使用

设置了tag为“principal”的view ImageView principal = (ImageView) findViewById(R.id.imagen_home_0);principal.setTag("principal"); 在其它地方获取,获取已经设置了tag为“principal”的view LayoutInflater inflater = LayoutInflate

C++ STL关联容器Set与集合论入门

1. 简介 Set(集合)属于关联式容器,也是STL中最实用的容器,关联式容器依据特定的排序准则,自动为其元素排序。Set集合的底层使用一颗红黑树,其属于一种非线性的数据结构,每一次插入数据都会自动进行排序,注意,不是需要排序时再排序,而是每一次插入数据的时候其都会自动进行排序。因此,Set中的元素总是顺序的。 Set的性质有:数据自动进行排序且数据唯一,是一种集合元素,允许进行数学上的集合相

Eclipse或MyEclipse中Java Working Set管理项目

随着学习JAVA的时间的越来越久,项目也越来越多,Eclipse或MyEclipse界面中显示一堆! 每次工作使用到的项目肯定不会太多...... 每次从这么大数量的工程当中找到自己要使用的, 必须大规模的滚动滚动条...... 图片一   Project Explorer中:    图片二:Package Explorer中: 这样就好找很多了,分类放!

STL set整理

#include<set>#include<cstdio>#include<iterator>#include<iostream>#include<algorithm>using namespace std;//set 集合的操作//multisetset<int>Set1;set<int>Set2;set<int>Set3;/*begin() 返回指向第一个元素的迭代器

解决PHP Warning: strftime(): It is not safe to rely on the system's timezone set

当运行一些程序时,在httpd日志中会有如下警告日志: PHP Warning:  strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set(

Java中集合类Set、List和Map的区别

Java中的集合包括三大类,它们是Set、List和Map,它们都处于java.util包中,Set、List和Map都是接口,它们有各自的实现类。Set的实现类主要有HashSet和TreeSet,List的实现类主要有ArrayList,Map的实现类主要有HashMap和TreeMap。那么它们有什么区别呢? Set中的对象不按特定方式排序,并且没有重复对象。但它的有些实现类能对集合中的对