程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> IL中的棧和閃電的Owin推薦,IL閃電Owin

IL中的棧和閃電的Owin推薦,IL閃電Owin

編輯:C#入門知識

IL中的棧和閃電的Owin推薦,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。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved