當e。 G。創建Windows Phone應用程序,我必須在模擬器和ARM中選擇x86進行調試,以便在手機上進行調試。那當然是因爲我的電腦運行的是x86(x64,具體而言,但x64處理器只有不同的寄存器長度(請糾正我,如果我錯了)),我的手機有ARM處理器。但不像C++ C#不是直接編譯成彙編器,而是編譯成某種中間語言。所以我的問題是:爲什麼這個中間語言在不同的平臺上有所不同。重寫解釋中間語言的虛擬機是不夠的?例如, Java可以在Mac,PC等上運行,無需爲每個平臺編譯。爲什麼需要爲多個平臺編譯.NET代碼
4
A
回答
4
你剛剛做錯了。無論平臺選擇如何,IL都完全一樣。
當您在Visual Studio 2013中創建新的Phone項目時,您將得到一個解決方案三個平臺選擇:AnyCPU,x86和ARM。後兩者在純.NET項目中是多餘的。它們出現的唯一原因是因爲Phone還支持本地C++項目。由於C++直接編譯爲機器碼,所以目標體系結構確實是。
在純.NET項目中,您只需要AnyCPU。當然命名相當;)
1
中間語言(CIL;通用中間語言)不是跨目標平臺不同。然而,其已經將準時編譯(或預編譯)爲目標CPU的機器語言。否則它不會運行(注意:它可以被解釋,但這不太可能)。 Java完全一樣。
關於Visual Studio中的目標CPU設置,您始終可以使用AnyCPU
並且問題消失。
相關問題
- 1. 爲什麼perl編譯的代碼需要更多內存?
- 2. 爲什麼需要編譯Java代碼,但JavaScript代碼不需要
- 3. 爲什麼要編譯Haskell代碼?
- 4. 這段代碼爲什麼要編譯?
- 5. 爲什麼SASS編譯不需要/未使用的代碼
- 6. 需要幫助瞭解爲什麼此代碼不能編譯
- 7. 如何爲多個平臺編譯庫
- 8. 爲什麼不編譯這個代碼?
- 9. 爲什麼不編譯這個代碼?
- 10. 這個C代碼爲什麼編譯?
- 11. 爲什麼不編譯這個代碼?
- 12. 爲什麼這個Java代碼編譯
- 13. 斯卡拉平等:爲什麼這個代碼編譯?
- 14. 爲什麼我無法使用VC2010編譯x64平臺的彙編代碼?
- 15. 爲什麼XAML不需要編譯?
- 16. GCC編譯代碼:爲什麼整數聲明需要幾個語句?
- 17. Java編譯混淆:爲什麼這個代碼編譯?
- 18. 爲什麼編譯多個分號的代碼?
- 19. 這段代碼爲什麼不編譯?
- 20. C++:爲什麼代碼正在編譯
- 21. 此代碼爲什麼編譯失敗?
- 22. 爲什麼不編譯這段代碼?
- 23. 陣列代碼 - 爲什麼不編譯?
- 24. 爲什麼編譯成中間代碼?
- 25. 爲什麼代碼不能編譯
- 26. Blend爲什麼要編譯?
- 27. 爲什麼要編譯?
- 28. 爲什麼需要XML編碼?
- 29. 爲什麼你需要編碼URL?
- 30. 爲什麼不使用.NET 4.0在VS2010中編譯此代碼?
坦克爲您的答案。而且要清楚:我沒有問題,這更像是一個純粹的興趣問題。但無論如何:謝謝。 – jalgames