.NET解释器

由于目前项目中使用的语言是C#,而C#在IOS上只能以AOT方式执行,那么热更新就是一个非常棘手的问题。

为此我这里开源一个自己的.NET 解释器。

当前C#热更新的主要貌似有同仁实现过,好像有个C#SCRIPT(非标准C#)ILScript

后面的ILscript的实现和我目前的思路一致,直接解释执行IL CODE。同时依赖于现有的.net运行库,尽可能的不要全部都解释执行,如一些不需要热更新的部分,框架底层,网络层,IO层,通常这些代码会被大量使用,不太容易出现非常严重的问题。而一般引起问题的都是一些业务逻辑。所以我实现的解释器只解释执行一部分代码,而另外一部分还是原生执行。

但是这个解释执行有个非常大的问题,就是NATIVE代码(对于解释执行代码)来说,如何把一个解释层的虚拟对象与NATIVE代码中的对象对应,以及NATIVE代码的VIRTUAL CALL(在NATVIE代码执行时不能插入代码)。

目前这两个问题在代码中都能初步解决,具体原理嘛,大家先看代码,以后可能会开个系列文章,来说说怎么样实现一个.NET解释器。

代码仓库:https://github.com/dotnetscript

代码在DEVELOP分支中,大家有兴趣的话可以看看,对于其他IL解释器方案,目前的实现基本可以完美实现跨NATIVE层继承、交互,完整的泛型支持,ASYNC/AWAIT支持,另外异常支持也基本完成,但还没有完全测试,另外在解释代码中不能使用TYPE或者GETTYPE这种,这个会以后慢慢加进去。

大家有什么问题多多留言吧,互相交流!

转载于:https://www.cnblogs.com/gamedevboy/p/5634659.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值