.NET開發者可以在Windows 8中使用ARM

jopen 12年前發布 | 6K 次閱讀 .NET

  作者 Jeff Martin 譯者姚琪琳

  英文原文:ARMing .NET Developers for Windows 8

  .NET Framework 和公共語言運行庫(CLR)的優勢之一就是,致力于此的開發者可以從它提供的基礎硬件平臺的抽象中獲益。最近,微軟 CLR 團隊的程序經理 Andrew Pardoe描述了針對此框架所做的一些更改,從而使它能運行在 ARM 架構上。此舉比切換到 64 位計算架構還要復雜,Pardoe 解釋了這些差異。

  Pardoe 說道,“……盡管 .NET Framework 被設計為非特定平臺的,但它自誕生那天起主要運行在基于 x86 架構的硬件上”,因此要想在 ARM 架構上運行其代碼,開發者需要仔細研究以下幾個方面:

  • 較弱的內存模型,只能帶來更嚴格的數據對齊(data alignment)要求。
  • 對函數參數處理方式上的差異。
  • Visual Studio 下項目配置信息的細節。
  • </ul>

      基于 x86 架構的處理器依附于一種強內存模型,它可確保“……保證處理器在執行大多數讀寫操作時,其執行順序看起來與在程序中指定的順序相同”。這一點確保了對多線程編程的簡化。相比之下,在編排階段,ARM 架構的處理器在重組代碼時則無法保證這一點。據 Pardoe 說,最終的結果是,目前的多線程代碼很可能存在一些尚未發現的潛在缺陷,然而要是這些代碼只在基于 x86 架構的機器上運行的話,那么就不會出任何問題。

      出于對 CLR 性能的考慮,使得微軟限制了運行庫在 ARM 架構處理器上強制實現強內存模型的程度。雖然做了一些更改,例如“在向托管堆寫數據時,會在一些關鍵點上插入內存屏障(memory barriers),從而確保類型安全……”,但是為了獲得最佳結果,Pardoe 建議開發者在適當的位置使用 volatile 關鍵字

      在大多數情況下,CLR 都能處理數據對齊,不過在有些情況下開發者也可以影響此行為:

      第一種方法是,通過自定義特性 ExplicitLayout 來顯式指定某種結構的布局。第二種方法是,對于在托管代碼與本地代碼之間傳遞的結構不要準確指定其布局。

      最后,大多數面向 CLR 的開發者都可以將他們的 Visual Studio 項目設置為面向 AnyCPU,因此得到的代碼會同時兼容 ARM、x86、及 x64 三種架構。

    來自: InfoQ
     本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!