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

[查阅]MSIL Instruction Set的更多相关文章

  1. MSIL指令集

    名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ...

  2. MSIL 教程

    Microsoft Intermediate Language (MSIL) is a language used as the output of a number of compilers (C# ...

  3. Rewrite MSIL Code on the Fly with the .NET Framework Profiling API

    http://clrprofiler.codeplex.com/ http://blogs.msdn.com/b/davbr/archive/2012/11/19/clrprofiler-4-5-re ...

  4. Mono为何能跨平台?聊聊CIL(MSIL)

    前言: 其实小匹夫在U3D的开发中一直对U3D的跨平台能力很好奇.到底是什么原理使得U3D可以跨平台呢?后来发现了Mono的作用,并进一步了解到了CIL的存在.所以,作为一个对Unity3D跨平台能力 ...

  5. 浅析MSIL中间语言——基础篇

    一.开篇 研究MSIL纯属于个人喜好,说在前面MSIL应用于开发的地方很少,但是很大程度上能够帮着我们理解底层的原理,这是我了解MSIL的主要原因.托管代码表示应用程序的方法的功能,它们以微软的中间语 ...

  6. MSIL Hello World

    最近由于需要,开始阅读 MSIL 方面的东西.我读的是<.NET 探秘——MSIL 权威指南>(<Expert .NET 2.0 IL Assembler>中译版).感觉没什么 ...

  7. SharePoint 2013 扩展查阅项功能

    SharePoint 2013的查阅项功能,就是可以扩展其他列表字段为当前列表选项,但是选项太多的时候,会造成选择起来非常麻烦,所以,我们采取JS+Ajax的方式,改善一下这个展示,使操作更加方便. ...

  8. 写给自己的 程序集&msil 扫盲

    嘴上不说 心里却想MD 这家伙在博客园装了这么久的高手 竟然连这都不会 ,我去噢. 程序集签名 .net 下 “程序集” 什么东东 ,反正就是听着挺牛x的,其实就是指“一堆程序”从我们传统的C++封装 ...

  9. Access字段类型“查阅向导”

    1.显示控件有:“列表框”和“组合框”两种 2.组合框:第一个字段为“填充字段” 3.通过查阅向导建立的会自动添加“关系”(外键),因此在删除或修改字段时需要先删除二者关系,最好不通过“查阅向导”建立 ...

随机推荐

  1. JBOSS EAP实战(1)

    JBOSS的诞生 1998年,在硅谷SUN公司的SAP实验室,一个年轻人正坐在电脑前面思考,然后写着什么东西.不,他没有在写程序,他在写辞呈.他正在做出人生的一个重大决定:他要辞掉在SUN的这份工作, ...

  2. Android Studio精彩案例(四)《DrawerLayout使用详解仿网易新闻客户端侧边栏 》

    转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 为了提高兴趣,咱们开头先看看最终要实现什么样的效果: 侧拉菜单在Android应用中非常常见,它的实现方式太多了,今天我们就说说使用G ...

  3. JavaScript DOM详解

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52727448 本文出自:[余志强的博客] 一.DOM概述 D: Do ...

  4. LAB颜色空间各通道的取值范围

    简介 LAB颜色空间在计算机视觉中经常被使用,知道L,A,B三个通道的取值范围有一定的意义. OpenCV获取LAB取值范围 下面是一段实验代码,用于获取LAB的取值范围. 基本思路是,排列组合所有R ...

  5. 在Linux上的虚拟机上启动Oracle上报ORA-00845: MEMORY_TARGET not supported on this system的问题解决

    解决办法: 1.将当前虚拟机的内容调整大一些(以下转载:http://jingyan.baidu.com/article/414eccf67b8baa6b421f0a60.html) VMware虚拟 ...

  6. 手把手图文并茂教你用Android Studio编译FFmpeg库并移植

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52661331 之前曾写过一篇&l ...

  7. ROS_Kinetic_x ROS栅格地图庫 Grid Map Library

    源自:https://github.com/ethz-asl/grid_map Grid Map Overview This is a C++ library with ROS interface t ...

  8. UNIX网络编程——Socket通信原理和实践

    我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠so ...

  9. Coroutine协同程序介绍(Unity3D开发之三)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢! 原文地址: http://www.cocos2dev.com/?p=496 Coroutine在Uni ...

  10. 与信号相关的linux系统编程API

    1. kill(pid_t pid, int sig); //给指定的进程发送sig信号   raise(int sig); //给当前进程发送sig信号2. 处理指定的信号    typedef v ...