.NET中常见的 IL 指令集

本文详细介绍了.NET平台下中间语言(Intermediate Language, IL)中常见的指令集,包括算术运算、条件跳转、对象操作等指令,并解释了每条指令的具体作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、IL中常见的符号

 

 

 

二、.NET中常见的 IL 指令集

 

 

名称

说明

Add

将两个值相加并将结果推送到计算堆栈上。

Add.Ovf

将两个整数相加,执行溢出检查,并且将结果推送到计算堆栈上。

Add.Ovf.Un

将两个无符号整数值相加,执行溢出检查,并且将结果推送到计算堆栈上。

And

计算两个值的按位并将结果推送到计算堆栈上。

Arglist

返回指向当前方法的参数列表的非托管指针。

Beq

如果两个值相等,则将控制转移到目标指令。

Beq.S

如果两个值相等,则将控制转移到目标指令(短格式)。

Bge

如果第一个值大于或等于第二个值,则将控制转移到目标指令。

Bge.S

如果第一个值大于或等于第二个值,则将控制转移到目标指令(短格式)。

Bge.Un

当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令。

Bge.Un.S

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

Bgt

如果第一个值大于第二个值,则将控制转移到目标指令。

Bgt.S

如果第一个值大于第二个值,则将控制转移到目标指令(短格式)。

Bgt.Un

当比较无符号整数值或不可排序的浮点型值时,如果第一个值大于第二个值,则将控制转移到目标指令。

Bgt.Un.S

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

Ble

如果第一个值小于或等于第二个值,则将控制转移到目标指令。

Ble.S

如果第一个值小于或等于第二个值,则将控制转移到目标指令(短格式)。

Ble.Un

当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于或等于第二个值,则将控制转移到目标指令。

Ble.Un.S

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

Blt

如果第一个值小于第二个值,则将控制转移到目标指令。

Blt.S

如果第一个值小于第二个值,则将控制转移到目标指令(短格式)。

Blt.Un

当比较无符号整数值或不可排序的浮点型值时,如果第一个值小于第二个值,则将控制转移到目标指令。

Blt.Un.S

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

Bne.Un

当两个无符号整数值或不可排序的浮点型值不相等时,将控制转移到目标指令。

Bne.Un.S

当两个无符号整数值或不可排序的浮点型值不相等时,将控制转移到目标指令(短格式)。

Box

将值类转换为对象引用(O 类型)。

Br

无条件地将控制转移到目标指令。

Br.S

无条件地将控制转移到目标指令(短格式)。

Break

向公共语言结构 (CLI) 发出信号以通知调试器已撞上了一个断点。

Brfalse

如果 value false、空引用(Visual Basic 中的 Nothing)或零,则将控制转移到目标指令。

Brfalse.S

如果 value false、空引用或零,则将控制转移到目标指令。

Brtrue

如果 value true、非空或非零,则将控制转移到目标指令。

Brtrue.S

如果 value true、非空或非零,则将控制转移到目标指令(短格式)。

Call

调用由传递的方法说明符指示的方法。

Calli

通过调用约定描述的参数调用在计算堆栈上指示的方法(作为指向入口点的指针)。

Callvirt

对对象调用后期绑定方法,并且将返回值推送到计算堆栈上。

Castclass

尝试将引用传递的对象转换为指定的类。

Ceq

比较两个值。如果这两个值相等,则将整数值 1 (int32) 推送到计算堆栈上;否则,将 0 (int32) 推送到计算堆栈上。

Cgt

比较两个值。如果第一个值大于第二个值,则将整数值 1 (int32) 推送到计算堆栈上;反之,将 0 (int32) 推送到计算堆栈上。

Cgt.Un

比较两个无符号的或不可排序的值。如果第一个值大于第二个值,则将整数值 1 (int32) 推送到计算堆栈上;反之,将 0 (int32) 推送到计算堆栈上。

Ckfinite

如果值不是有限数,则引发 ArithmeticException

Clt

比较两个值。如果第一个值小于第二个值,则将整数值 1 (int32) 推送到计算堆栈上;反之,将 0 (int32) 推送到计算堆栈上。

Clt.Un

比较无符号的或不可排序的值 value1 value2。如果 value1 小于 value2,则将整数值 1 (int32 ) 推送到计算堆栈上;反之,将 0 ( int32 ) 推送到计算堆栈上。

 

参考资料:.NET中常见的 IL 指令集  http://www.studyofnet.com/news/1242.html

 

转载于:https://my.oschina.net/u/2428791/blog/689614

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值