登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
借老赵和包子的春风,我也来谈谈IL与汇编(上) ...
借老赵和包子的春风,我也来谈谈IL与汇编(上)
[ 复制链接 ]
亢安芙
2025-5-29 20:26:48
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
园子里两个大牛正争的如火如荼,小生不才,借一下两个名人的名气也来谈一下Microsoftintermediate language (MSIL,就是大家口里的IL)和ASM(这里指针对X86汇编,排除其他一切“高级汇编”)。为了达成共识,我们先对一些概念回忆一下:
CPU只能执行机器码,不能执行IL
这个应该没有什么疑问吧。机器码就是传说的0、1的组合,虽然今天的CPU运算速度已经非常非常快,而且非常非常智能,但它和上个世纪的CPU还是一样,还只能认识0、1的组合的这种机器码。
说到IL就应该提一提编译器的前端和后端。众所周知,微软的.NET平台上有众多的语言,大家熟悉的有C#、VB.NET、Jscript.NET,而这些不同语法的“高级”语言,经过CSC.Exe(C#编译器)、VBC.Exe(VB.NET编译器)等编译后得到IL,这之前的部分我们称之为前端,实际上事情并没有到这里结束,当CLR加载托管程序集,运行某一个方法时,CLR发现这个方法还没有被即时编译(JIT),这个时候就会调用JIT编译器对这个方法的IL编译,编译的结果就是我们的目标代码(目标代码可以是汇编代码或机器码,这里不加以区分)。而这之后的JIT编译等过程我们可以认为是编译器的后端。
有了上面这段描述,各位同学大脑中应该有这样一幅画面:
通过这幅图我们看到,微软通过实现不同的前端,而共一个后端实现了一个平台,多种语言的目标。这也就是为什么你用VB.NET写的组件,我用C#可以直接使用,甚至是
我用C#写的类直接派生自一个VB.NET写的类。
因为IL相对于机器码来说相对简单,因为IL不能操作寄存器。所以你甚至可以自己定义一个语法,然后实现一个编译器的“前端”,将你自己的语言加入到.NET这个大家族
中(貌似园子里的装配脑袋正在做这方面的工作)。这样你自己的语言也可以享受.NET的类库了,.NET的垃圾回收机制了。
从这里我们了解到IL起一个桥梁的作用。那好,我们学习IL到底可以干些什么?
1:探究C#这些编译器内部所作所为:
记得以前博客园有一场对访问集合对象时,使用for好还是foreach好的大讨论,那我就用这个例子来用IL说明一下使用for访问
static void Main(string[] args)
{
ArrayList arr = new ArrayList();
for (int i = 0; i
借老
包子
春风
也来
谈谈
相关帖子
谈谈我的缓存(一)
谈谈我对敏捷的理解
谈谈架构设计
面试官:来谈谈Vue3的provide和inject实现多级传递的原理
从底层逻辑,谈谈next()和nextLine()配合使用时,出现的“跳过输入”的现象
谈谈程序猿的职业方向
从DevOps实践落地的角度谈谈“流程”和“规范"的反模式
从四分钟到两秒——谈谈客户端性能优化的一些最佳实践
记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
[生存技能] 速冻包子热处理工艺优化研究:基于家庭厨房环境的操作规程
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
谈谈我的缓存(一)
4
355
班嘉淑
2025-05-29
业界
谈谈我对敏捷的理解
1
127
凤患更
2025-05-29
业界
谈谈架构设计
3
292
彭水晶
2025-06-06
业界
面试官:来谈谈Vue3的provide和inject实现多级传递的原理
7
308
邹弘丽
2025-06-06
业界
从底层逻辑,谈谈next()和nextLine()配合使用时,出现的“跳过输入”的现象
4
1071
峰埋姚
2025-09-28
安全
谈谈程序猿的职业方向
3
114
猷咎
2025-10-01
安全
从DevOps实践落地的角度谈谈“流程”和“规范"的反模式
3
680
恿榫
2025-10-11
业界
从四分钟到两秒——谈谈客户端性能优化的一些最佳实践
5
1042
方方仪
2025-10-31
业界
记一次SQLServer的分页优化兼谈谈使用Row_Number()分页存在的问题
2
739
簧横
2025-10-31
安全
[生存技能] 速冻包子热处理工艺优化研究:基于家庭厨房环境的操作规程
0
689
袁曼妮
2025-12-18
回复
(6)
蝙俚
2025-10-13 00:41:48
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢,下载保存了
阮蓄
2025-10-18 00:46:20
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,下载保存了,貌似很强大
村亢
2025-11-8 21:17:07
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,下载保存了,貌似很强大
渣骑
2025-11-19 10:28:43
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
盖彗云
2025-12-3 07:23:22
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢,下载保存了
姜删懔
2025-12-11 05:31:23
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢,下载保存了
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
亢安芙
2025-12-11 05:31:23
关注
0
粉丝关注
28
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994891
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9982
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
561
升级curl版本,及升级后引起的动态库链接不
286
2025年GEO优化服务商全景对比:五大核心维
775
AI Agent详解
980
Buildah 简明教程:让镜像构建更轻量,告别
604
OceanBase 在滴滴大规模运维经验以及新功能
974
[CSS+]HTML Learn Data Day 2
96
掌握相关性分析:读懂数据间的“悄悄话”
136
嵌入式UI框架-抗锯齿画圆弧算法
935
嵌入式UI框架的渐变原理、渐变算法
217
日本股票 API 对接实战指南(实时行情与 IP
561
解决Docker磁盘空间告急:认识并清理“悬空
393
别再只会算直线距离了!用“马氏距离”揪出
525
企业进行信息化后,一定会提高效率吗?真相
516
n8n整合ffmpeg
492
从random随机数看验证码重复数字
523
OceanBase 向量索引优化指南
232
Vue2中能否实现输入中文自动转化为拼音, 且
753
从项目成果到职业晋升:项目经理年终总结的
452
JS逆向-混淆加密-识别&还原-Eval&JSFuck&JS
937
2025年上海防水补漏谁家强?长三角标杆企业