架构班01期il指令详细解析_第1页
架构班01期il指令详细解析_第2页
架构班01期il指令详细解析_第3页
架构班01期il指令详细解析_第4页
架构班01期il指令详细解析_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、名称说明Add将两个值相加并将结果推送到计算堆栈上。Add.Ovf将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上。Add.Ovf.Un将两个无符号整数值相加,执行溢出检查,并且将结果推送到计算堆栈上。And计算两个值的按位“与”并将结果推送到计算堆栈上。Arglist返回指向当前方法的参数列表的非托管指针。Beq如果两个值相等,则将控制转移到目标指令。Beq.S如果两个值相等,则将控制转移到目标指令(短格式)。Bge如果第一个值大于或等于第二个值,则将控制转移到目标指令。Bge.S如果第一个值大于或等于第二个值,则将控制转移到目标指令(短格式)。Bge.Un当比较无符号整数值或不可排

2、序的浮点型值时,如果第一个值大于第二个值,则将控制转移标指令。Bge.Un.S当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移标指令(短格式)。Bgt如果第一个值大于第二个值,则将控制转移到目标指令。Bgt.S如果第一个值大于第二个值,则将控制转移到目标指令(短格式)。Bgt.Un当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移标指令。Bgt.Un.S当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移标指令(短格式)。Ble如果第一个值小于或等于第二个值,则将控制转移到目标指令。Ble.S如果第一个值

3、小于或等于第二个值,则将控制转移到目标指令(短格式)。Ble.Un当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于或等于第二个值,则将控移到目标指令。Ble.Un.S当比较无符号整数值或不可排序的浮点值时,如果第一个值小于或等于第二个值,则将控制移到目标指令(短格式)。Blt如果第一个值小于第二个值,则将控制转移到目标指令。Blt.S如果第一个值小于第二个值,则将控制转移到目标指令(短格式)。Blt.Un当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于第二个值,则将控制转移标指令。Blt.Un.S当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于第二个值,则将控制转

4、移标指令(短格式)。Bne.Un当两个无符号整数值或不可排序的浮点型值不相等时,将控制转移到目标指令。Bne.Un.S当两个无符号整数值或不可排序的浮点型值不相等时,将控制转移到目标指令(短格式)。Box将值类转换为对象(O 类型)。Br无条件地将控制转移到目标指令。Br.S无条件地将控制转移到目标指令(短格式)。Break向公共语言结构 (CLI) 发出信号以通知调试器已撞上了一个断点。Brfalse如果 value 为 false、空(Visual Basic 中的 Nothing)或零,则将控制转移到目标令。Brfalse.S如果 value 为 false、空或零,则将控制转移到目标指

5、令。Brtrue如果 value 为 true、非空或非零,则将控制转移到目标指令。Brtrue.S如果 value 为 true、非空或非零,则将控制转移到目标指令(短格式)。Call调用由传递的方法说明符指示的方法。Calli通过调用约定描述的参数调用在计算堆栈上指示的方法(作为指向点的指针)。Callvirt对对象调用后期绑定方法,并且将返回值推送到计算堆栈上。Castclass尝试将传递的对象转换为指定的类。Ceq比较两个值。如果这两个值相等,则将整数值 1 (32) 推送到计算堆栈上;否则,将 0(32) 推送到计算堆栈上。Cgt比较两个值。如果第一个值大于第二个值,则将整数值 1

6、(32) 推送到计算堆栈上;反0 (32) 推送到计算堆栈上。Cgt.Un比较两个无符号的或不可排序的值。如果第一个值大于第二个值,则将整数值 1 (32)计算堆栈上;反之,将 0 (32) 推送到计算堆栈上。Ckfinite如果值不是有限数,则ArithmeticException。Clt比较两个值。如果第一个值小于第二个值,则将整数值 1 (32) 推送到计算堆栈上;反0 (32) 推送到计算堆栈上。Clt.Un比较无符号的或不可排序的值 value1 和 value2。如果 value1 小于 value2,则将整数值 (32 ) 推送到计算堆栈上;反之,将 0 (32 ) 推送到计算堆

7、栈上。Constrained约束要对其进行虚方法调用的类型。Conv.I将位于计算堆栈顶部的值转换为 native。Conv.I1将位于计算堆栈顶部的值转换为8,然后将其扩展(填充)为32。Conv.I2将位于计算堆栈顶部的值转换为16,然后将其扩展(填充)为32。Conv.I4将位于计算堆栈顶部的值转换为32。Conv.I8将位于计算堆栈顶部的值转换为64。Conv.Ovf.I将位于计算堆栈顶部的有符号值转换为有符号 native,并在溢出时OverflowException。Conv.Ovf.I.Un将位于计算堆栈顶部的无符号值转换为有符号 native,并在溢出时OverflowExce

8、ption。Conv.Ovf.I1将位于计算堆栈顶部的有符号值转换为有符号8 并将其扩展为32,并在溢出时 OverflowException。Conv.Ovf.I1.Un将位于计算堆栈顶部的无符号值转换为有符号8 并将其扩展为32,并在溢出时 OverflowException。Conv.Ovf.I2将位于计算堆栈顶部的有符号值转换为有符号16 并将其扩展为32,并在溢出时 OverflowException。Conv.Ovf.I2.Un将位于计算堆栈顶部的无符号值转换为有符号16 并将其扩展为32,并在溢出时 OverflowException。Conv.Ovf.I4将位于计算堆栈顶部的有

9、符号值转换为有符号32,并在溢出时OverflowExceptionConv.Ovf.I4.Un将位于计算堆栈顶部的无符号值转换为有符号32,并在溢出时OverflowExceptionConv.Ovf.I8将位于计算堆栈顶部的有符号值转换为有符号64,并在溢出时OverflowExceptionConv.Ovf.I8.Un将位于计算堆栈顶部的无符号值转换为有符号64,并在溢出时OverflowExceptionConv.Ovf.U将位于计算堆栈顶部的有符号值转换为 unsigned native,并在溢出时OverflowException。Conv.Ovf.U.Un将位于计算堆栈顶部的无符

10、号值转换为 unsigned native,并在溢出时OverflowException。Conv.Ovf.U1将位于计算堆栈顶部的有符号值转换为 unsigned8 并将其扩展为32,并在溢出时 OverflowException。Conv.Ovf.U1.Un将位于计算堆栈顶部的无符号值转换为 unsigned8 并将其扩展为32,并在溢出时 OverflowException。Conv.Ovf.U2将位于计算堆栈顶部的有符号值转换为 unsigned16 并将其扩展为32,并在溢出时 OverflowException。Conv.Ovf.U2.Un将位于计算堆栈顶部的无符号值转换为 uns

11、igned16 并将其扩展为32,并在溢出时 OverflowException。Conv.Ovf.U4将位于计算堆栈顶部的有符号值转换为 unsigned32,并在溢出时OverflowExceptConv.Ovf.U4.Un将位于计算堆栈顶部的无符号值转换为 unsigned32,并在溢出时OverflowExceptConv.Ovf.U8将位于计算堆栈顶部的有符号值转换为 unsigned64,并在溢出时OverflowExceptConv.Ovf.U8.Un将位于计算堆栈顶部的无符号值转换为 unsigned64,并在溢出时OverflowExceptConv.R.Un将位于计算堆栈顶

12、部的无符号整数值转换为 float32。Conv.R4将位于计算堆栈顶部的值转换为 float32。Conv.R8将位于计算堆栈顶部的值转换为 float64。Conv.U将位于计算堆栈顶部的值转换为 unsigned native,然后将其扩展为 native。Conv.U1将位于计算堆栈顶部的值转换为 unsigned8,然后将其扩展为32。Conv.U2将位于计算堆栈顶部的值转换为 unsigned16,然后将其扩展为32。Conv.U4将位于计算堆栈顶部的值转换为 unsigned32,然后将其扩展为32。Conv.U8将位于计算堆栈顶部的值转换为 unsigned64,然后将其扩展为

13、64。Cpblk将指定数目的字节从源地址到目标地址。Cpobj将位于对象(&、* 或 native类型)地址的值类型到目标对象(&、* 或 native类型)的地址。Div将两个值相除并将结果作为浮点(F 类型)或商(32 类型)推送到计算堆栈上。Div.Un两个无符号整数值相除并将结果 (32 ) 推送到计算堆栈上。Dup计算堆栈上当前最顶端的值,然后将副本推送到计算堆栈上。Endfilter将控制从异常的 filter 子句转移回公共语言结构 (CLI) 异常处理程序。Endfinally将控制从异常块的 fault 或 finally 子句转移回公共语言结构 (CLI) 异常处理程序。I

14、nitblk将位于特定地址的内存的指定块初始化为给定大小和初始值。Initobj将位于指定地址的值类型的每个字段初始化为空或适当的基元类型的 0。Isinst测试对象(O 类型)是否为特定类的实例。Jmp退出当前方法并跳至指定方法。Ldarg将参数(由指定索引值)加载到堆栈上。Ldarg.0将索引为 0 的参数加载到计算堆栈上。Ldarg.1将索引为 1 的参数加载到计算堆栈上。Ldarg.2将索引为 2 的参数加载到计算堆栈上。Ldarg.3将索引为 3 的参数加载到计算堆栈上。Ldarg.S将参数(由指定的短格式索引)加载到计算堆栈上。Ldarga将参数地址加载到计算堆栈上。Ldarga.

15、S以短格式将参数地址加载到计算堆栈上。Ldc.I4将所提供的32 类型的值作为32 推送到计算堆栈上。Ldc.I4.0将整数值 0 作为32 推送到计算堆栈上。Ldc.I4.1将整数值 1 作为32 推送到计算堆栈上。Ldc.I4.2将整数值 2 作为32 推送到计算堆栈上。Ldc.I4.3将整数值 3 作为32 推送到计算堆栈上。Ldc.I4.4将整数值 4 作为32 推送到计算堆栈上。Ldc.I4.5将整数值 5 作为32 推送到计算堆栈上。Ldc.I4.6将整数值 6 作为32 推送到计算堆栈上。Ldc.I4.7将整数值 7 作为32 推送到计算堆栈上。Ldc.I4.8将整数值 8 作为

16、32 推送到计算堆栈上。Ldc.I4.M1将整数值 -1 作为32 推送到计算堆栈上。Ldc.I4.S将提供的8 值作为32 推送到计算堆栈上(短格式)。Ldc.I8将所提供的64 类型的值作为64 推送到计算堆栈上。Ldc.R4将所提供的 float32 类型的值作为 F (float) 类型推送到计算堆栈上。Ldc.R8将所提供的 float64 类型的值作为 F (float) 类型推送到计算堆栈上。Ldelem按照指令中指定的类型,将指定数组索引中的元素加载到计算堆栈的顶部。Ldelem.I将位于指定数组索引处的 native类型的元素作为 native加载到计算堆栈的顶部Ldelem

17、.I1将位于指定数组索引处的8 类型的元素作为32 加载到计算堆栈的顶部。Ldelem.I2将位于指定数组索引处的16 类型的元素作为32 加载到计算堆栈的顶部。Ldelem.I4将位于指定数组索引处的32 类型的元素作为32 加载到计算堆栈的顶部。Ldelem.I8将位于指定数组索引处的64 类型的元素作为64 加载到计算堆栈的顶部。Ldelem.R4将位于指定数组索引处的 float32 类型的元素作为 F 类型(浮点型)加载到计算堆栈的顶Ldelem.R8将位于指定数组索引处的 float64 类型的元素作为 F 类型(浮点型)加载到计算堆栈的顶Ldelem.Ref将位于指定数组索引处的

18、包含对象的元素作为 O 类型(对象)加载到计算堆栈的Ldelem.U1将位于指定数组索引处的 unsigned8 类型的元素作为32 加载到计算堆栈的顶部。Ldelem.U2将位于指定数组索引处的 unsigned16 类型的元素作为32 加载到计算堆栈的顶部Ldelem.U4将位于指定数组索引处的 unsigned32 类型的元素作为32 加载到计算堆栈的顶部Ldelema将位于指定数组索引的数组元素的地址作为 & 类型(托管指针)加载到计算堆栈的顶部。Ldfld查找对象中其当前位于计算堆栈的字段的值。Ldflda查找对象中其当前位于计算堆栈的字段的地址。Ldftn将指向实现特定方法的本机代

19、码的非托管指针(native类型)推送到计算堆栈上。Ldind.I将 native类型的值作为 native间接加载到计算堆栈上。Ldind.I1将8 类型的值作为32 间接加载到计算堆栈上。Ldind.I2将16 类型的值作为32 间接加载到计算堆栈上。Ldind.I4将32 类型的值作为32 间接加载到计算堆栈上。Ldind.I8将64 类型的值作为64 间接加载到计算堆栈上。Ldind.R4将 float32 类型的值作为 F (float) 类型间接加载到计算堆栈上。Ldind.R8将 float64 类型的值作为 F (float) 类型间接加载到计算堆栈上。Ldind.Ref将对象

20、作为 O(对象)类型间接加载到计算堆栈上。Ldind.U1将 unsigned8 类型的值作为32 间接加载到计算堆栈上。Ldind.U2将 unsigned16 类型的值作为32 间接加载到计算堆栈上。Ldind.U4将 unsigned32 类型的值作为32 间接加载到计算堆栈上。Ldlen将从零开始的、一维数组的元素的数目推送到计算堆栈上。Ldloc将指定索引处的局部变量加载到计算堆栈上。Ldloc.0将索引 0 处的局部变量加载到计算堆栈上。Ldloc.1将索引 1 处的局部变量加载到计算堆栈上。Ldloc.2将索引 2 处的局部变量加载到计算堆栈上。Ldloc.3将索引 3 处的局部

21、变量加载到计算堆栈上。Ldloc.S将特定索引处的局部变量加载到计算堆栈上(短格式)。Ldloca将位于特定索引处的局部变量的地址加载到计算堆栈上。Ldloca.S将位于特定索引处的局部变量的地址加载到计算堆栈上(短格式)。Ldnull将空(O 类型)推送到计算堆栈上。Ldobj将地址指向的值类型对象到计算堆栈的顶部。Ldsfld将静态字段的值推送到计算堆栈上。Ldsflda将静态字段的地址推送到计算堆栈上。Ldstr推送对元数据中的字符串的新对象。Ldtoken将元数据标记转换为其运行时表示形式,并将其推送到计算堆栈上。Ldvirtftn将指向实现与指定对象关联的特定虚方法的本机代码的非托管

22、指针(native类型)推算堆栈上。Leave退出受保护的代码区域,无条件将控制转移到特定目标指令。Leave.S退出受保护的代码区域,无条件将控制转移到目标指令(缩写形式)。Localloc从本地动态内存池分配特定数目的字节并将第一个分配的字节的地址(瞬态指针,* 类型)到计算堆栈上。Mkrefany将对特定类型实例的类型化推送到计算堆栈上。Mul将两个值相乘并将结果推送到计算堆栈上。Mul.Ovf将两个整数值相乘,执行溢出检查,并将结果推送到计算堆栈上。Mul.Ovf.Un将两个无符号整数值相乘,执行溢出检查,并将结果推送到计算堆栈上。Neg对一个值执行求反并将结果推送到计算堆栈上。New

23、arr将对新的从零开始的一维数组(其元素属于特定类型)的对象推送到计算堆栈上。Newobj创建一个值类型的新对象或新实例,并将对象(O 类型)推送到计算堆栈上。Nop如果修补操作码,则填充空间。尽管可能消耗处理周期,但未执行任何有意义的操作。Not计算堆栈顶部整数值的按位求补并将结果作为相同的类型推送到计算堆栈上。Or计算位于堆栈顶部的两个整数值的按位求补并将结果推送到计算堆栈上。Pop移除当前位于计算堆栈顶部的值。Prefix1基础结构。此指令为保留指令。Prefix2基础结构。此指令为保留指令。Prefix3基础结构。此指令为保留指令。Prefix4基础结构。此指令为保留指令。Prefix

24、5基础结构。此指令为保留指令。Prefix6基础结构。此指令为保留指令。Prefix7基础结构。此指令为保留指令。Prefixref基础结构。此指令为保留指令。Readonly指定后面的数组地址操作在运行时不执行类型检查,并且返回可变性受限的托管指针。Refanytype检索嵌入在类型化内的类型标记。Refanyval检索嵌入在类型化内的地址(& 类型)。Rem将两个值相除并将余数推送到计算堆栈上。Rem.Un将两个无符号值相除并将余数推送到计算堆栈上。Ret从当前方法返回,并将返回值(如果存在)从调用方的计算堆栈推送到被调用方的计算堆栈Rethrow再次当前异常。Shl将整数值(用零填充)指

25、定的位数,并将结果推送到计算堆栈上。Shr将整数值右移(保留符号)指定的位数,并将结果推送到计算堆栈上。Shr.Un将无符号整数值右移(用零填充)指定的位数,并将结果推送到计算堆栈上。Sizeof将提供的值类型的大小(以字节为)推送到计算堆栈上。Starg将位于计算堆栈顶部的值到位于指定索引的参数槽中。Starg.S将位于计算堆栈顶部的值在参数槽中的指定索引处(短格式)。Sem用计算堆栈中的值替换给定索引处的数组元素,其类型在指令中指定。Sem.I用计算堆栈上的 native值替换给定索引处的数组元素。Sem.I1用计算堆栈上的8 值替换给定索引处的数组元素。Sem.I2用计算堆栈上的16 值替换给定索引处的数组元素。Sem.I4用计算堆栈上的32 值替换给定索引处的数组元素。Sem.I8用计算堆栈上的64 值替换给定索引处的数组元素。Sem.R4用计算堆栈上的 float32 值替换给定索引处的数组元素。Sem.R8用计算堆栈上的 float64 值替换给定索引处的数组元素。Sem.Ref用计算堆栈上的对象 ref 值(O 类型)替换给定索引处的数组元素。Stfld用新值替换在对象或指针的字段中的值。Stind.I在所提供的地址native类型的值。Stind.I1在所提供的地址8 类型的值。Stind.I2在所提供的地址16 类型的值。Stind.I4在所提供的地址3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论