[查阅]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 |
[查阅]MSIL Instruction Set的更多相关文章
- MSIL指令集
名称 说明 Add 将两个值相加并将结果推送到计算堆栈上. Add.Ovf 将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上. Add.Ovf.Un 将两个无符号整数值相加,执行溢出检查,并且 ...
- MSIL 教程
Microsoft Intermediate Language (MSIL) is a language used as the output of a number of compilers (C# ...
- 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 ...
- Mono为何能跨平台?聊聊CIL(MSIL)
前言: 其实小匹夫在U3D的开发中一直对U3D的跨平台能力很好奇.到底是什么原理使得U3D可以跨平台呢?后来发现了Mono的作用,并进一步了解到了CIL的存在.所以,作为一个对Unity3D跨平台能力 ...
- 浅析MSIL中间语言——基础篇
一.开篇 研究MSIL纯属于个人喜好,说在前面MSIL应用于开发的地方很少,但是很大程度上能够帮着我们理解底层的原理,这是我了解MSIL的主要原因.托管代码表示应用程序的方法的功能,它们以微软的中间语 ...
- MSIL Hello World
最近由于需要,开始阅读 MSIL 方面的东西.我读的是<.NET 探秘——MSIL 权威指南>(<Expert .NET 2.0 IL Assembler>中译版).感觉没什么 ...
- SharePoint 2013 扩展查阅项功能
SharePoint 2013的查阅项功能,就是可以扩展其他列表字段为当前列表选项,但是选项太多的时候,会造成选择起来非常麻烦,所以,我们采取JS+Ajax的方式,改善一下这个展示,使操作更加方便. ...
- 写给自己的 程序集&msil 扫盲
嘴上不说 心里却想MD 这家伙在博客园装了这么久的高手 竟然连这都不会 ,我去噢. 程序集签名 .net 下 “程序集” 什么东东 ,反正就是听着挺牛x的,其实就是指“一堆程序”从我们传统的C++封装 ...
- Access字段类型“查阅向导”
1.显示控件有:“列表框”和“组合框”两种 2.组合框:第一个字段为“填充字段” 3.通过查阅向导建立的会自动添加“关系”(外键),因此在删除或修改字段时需要先删除二者关系,最好不通过“查阅向导”建立 ...
随机推荐
- Bootstrap3 栅格系统-实例:从堆叠到水平排列
使用单一的一组 .col-md-* 栅格类,就可以创建一个基本的栅格系统,在手机和平板设备上一开始是堆叠在一起的(超小屏幕到小屏幕这一范围),在桌面(中等)屏幕设备上变为水平排列.所有"列( ...
- 从0到1:制作你的苹果podcast(播客)
注意:本文不是教你如何录音.如何做后期的文章.而是聚焦于如何搭建播客(podcast)需要的环境. 本文科普类文章,干货少,湿货多. 先选一个主机吧 这步的初衷和你自己建站是一样的.你可以购买一个独立 ...
- Android5.0特性ToolBar
>Toolbar是什么?大概说一下它的官方介绍.Toolbar是应用的内容的标准工具栏,`可以说是Actionbar的升级版`,两者不是独立关系,要使用Toolbar还是得跟ActionBar扯 ...
- OpenResty修改Nginx默认autoindex页面
Nginx的autoindex 命令可以自动列出目录下的文件,一些网站用这个功能做文件下载,但是Nginx又没有提供这个页面的 自定义的功能,后来看到别人提及 ngx_openresty,才想到 bo ...
- Android图表库MPAndroidChart(九)——神神秘秘的散点图
Android图表库MPAndroidChart(九)--神神秘秘的散点图 今天所的散点图可能用的人不多,但是也算是图表界的一股清流,我们来看下实际的效果 添加的数据有点少,但是足以表示散点图了,我们 ...
- Unity3d导出场景地图寻路
Unity3d导出场景地图寻路(金庆的专栏)Unity3d中用无渲染的透明盒子摆出地面和阻档区域. this.renderer.enabled = false;所有这些盒子设为Navig ...
- 【SSH系列】-- hibernate基本原理&&入门demo
什么是hibernate? hibernate在英文中是冬眠的意思,当冬季来临,世界万物开始准备冬眠,但是程序猿这种动物好像不冬眠,因为需求变了,要改bug,冬眠,对于对象来说就是持 ...
- 探究java接口中的变量与方法
关于变量 java接口里的变量都是默认 pubic static final的 为啥? public 接口得能被所有对象调用 static 这个变量是属于接口本身,而不是实现了接口的对象的 具体来说 ...
- memcached实战系列(三)memcached命令使用
memcached命令的使用,在这里我们最好了解一下命令的含义,对命令有一个大致的了解,在了解的基础上进行使用.这里的命名是常用的crud命令的演示. 1.1.1. memcached命令的格式 标准 ...
- 百度地图开发之POI数据检索
前面学习百度地图的一些基本的用法,这次我们一起来看一看百度地图的检索功能吧 poi检索api的基本用法 百度地图的POI类中共有如下几个方法 PoiBoundSearchOption POI范围内检索 ...