zoukankan      html  css  js  c++  java
  • IL中的栈和闪电的Owin推荐

    最近几天有幸得到闪电大哥的指点,了解了EMIT和IL中的一些指令。虽然有高射炮打蚊子的说法,但是我相信“二八定律”,80%的功能可以用20%的技术解决,20%的功能只能用80%的技术解决。大哥的博客:http://www.cnblogs.com/qldsrx/p/4542496.html

    在C#底层中,IL正发着耀眼的光芒。第一次完整的看到EMIT(反射的发出,基本就是用 代码手写IL,然后执行,效率最高,性能最好,编写难度很大)是在闪电大哥的OWIN框架。闪电大哥自己封装了OWIN的框架可以做webApi也可以做网站。写得很好,用EMIT也做了大量的优化,在windows和linux都可以良好的运行,linux上在宿主jexus上完美运行,IIS更不用说。(项目地址:https://github.com/qldsrx/OwinFramework),用来做WebApi很好用的

    然后是IL中的栈,栈这个我理解成一个桶,这个桶可以放一定数量的圆饼,符合先进后出的原则。在做一些加减乘除的操作的时候,会弹出顶部两个参数进行操作,操作后的结果将会重新压人栈中。

    int i=1;
    int j=2;
    int k=3;
    Console.WriteLine(i+j+k);

    如上代码编译成IL后,是先会定义一个栈的大小,然后为三个变量分配内存,接着将值1,2,3分别载入到这些变量中。慢慢的再将索引第一个变量和索引第二个变量压入栈,做add操作,得到值后压入栈,接着将索引第三个变量压入栈,再做add操作,并将结果压入栈。最后是call函数Writeline,弹出栈顶部的参数传入执行。当然,结束后要return。

  • 相关阅读:
    C# Linq 交集、并集、差集、去重
    SpringICO和DI区别
    postman调用webapi错误记录
    NetCore实例提供的依赖注入的生命周期
    ios处理暴力输出问题
    一块国外开源的视频播发器
    一个有创意的3D APP
    Flurry Analytics最近免费添加了获取新用户分析和app崩溃报告的功能
    那些域名服务商
    Moneybookers的优点
  • 原文地址:https://www.cnblogs.com/RainbowInTheSky/p/4567421.html
Copyright © 2011-2022 走看看