我想知道是否有一種方法可以設置編譯器將我的代碼編譯爲只包含1和0的.bin文件,不需要十六進制代碼一個.exe文件。我想讓代碼在處理器上運行,而不是操作系統。是否有任何設置將其設置爲Express版本中的設置?提前致謝。在Visual Studio 2012 Express中將C代碼編譯到.bin文件中
回答
「.bin」文件沒有什麼魔力。擴展名一般只是表示一個二進制文件,但所有文件都是二進制文件。因此,您可以通過將鏈接器生成的「.exe」文件重命名爲「.bin」來創建「.bin」文件。
我認爲你不會對此感到滿意,所以我會詳細說明一下。 「.exe」文件擴展名(至少在Windows上,我假設你已經添加了一個與Visual Studio相關的標記),這意味着一個帶有特殊格式的二進制文件,簡稱爲Portable Executable。這是Windows操作系統上使用的二進制文件的標準格式,包括可執行文件和DLL。
所以一個PE文件是一個二進制(「.bin」)文件,但是一個帶有「.bin」擴展名的未知二進制文件並不是必然一個PE文件。你可以採取一些其他的二進制文件(如圖像),並將其重命名爲「.bin」擴展名。它只是包含一個沒有特定格式的二進制位序列。您將無法執行該文件,因爲它的格式不正確。它缺乏使其可執行的神奇PE頭。 C編譯系統默認輸出PE文件是有原因的:這是唯一對您有用的文件類型。
而像user1167662在他的comment中所說的,關於十六進制代碼沒有什麼不可思議的。二進制文件中的代碼可以用或十六進制或二進制格式表示。無論哪種方式,都是完全一樣的信息。任何好的文本編輯器(至少爲程序員設計的)都可以使用表示(或ASCII或十進制)打開和顯示文件的內容。
我希望它儘可能低,以獲得最佳性能。
它沒有什麼「更低的水平」,你當然不會得到任何優化的性能。 PE文件已經包含直接在微處理器上運行的本機機器碼。它不像託管代碼那樣被解釋。它包含處理器機器語言中的一系列指令。 PE文件只包含一個額外的頭文件,允許它們被操作系統識別和執行。這對性能沒有影響。
構建操作系統。
現在,這有點不同了…特別是,這比編寫常規的Windows應用程序要困難得多。你有一個很多工作在你面前,因爲你不能依靠操作系統來做任何事情來幫助你。您需要了解您所針對的底層硬件 - 開發人員的指南/手冊對您的CPU非常有用。
而且你必須得到一個不同的構建環境。如果您沒有使用識別的格式創建PE文件,Visual Studio不會對您有所幫助。微軟的C++鏈接程序也不包含在內,link.exe
。鏈接器不支持輸出「扁平」二進制文件(即剝去PE標頭的文件)。你將需要一個不同的鏈接器。 The GCC toolset can do this。有一個Windows端口;它被稱爲MinGW。
我也推薦一本關於操作系統開發的書。在堆棧溢出問題的答案中覆蓋太多了。而對於學習目的,我強烈建議使用Intel以外的架構。
- 1. 在Visual C++ Express中編譯C代碼
- 2. 在Visual Studio Express 2012中運行C代碼的問題
- 3. 如何將源代碼添加到Visual Studio Express 2012中的.dll文件?
- 4. Visual Studio 2012將.c文件編譯爲cpp文件
- 5. Visual Studio Express 2012不在編譯文件夾中構建exe文件
- 6. Visual Studio Express 2012或Express 2013中提供64位編譯器?
- 7. 用gcc編譯的代碼不會在visual studio 2012編譯
- 8. 內聯彙編代碼無法在Visual C++ 2010 Express中編譯
- 9. 在Visual C#2010 Express中編譯C#代碼
- 10. c#reportviewer visual studio 2012 express
- 11. 不能在Visual Studio編譯C 2012
- 12. 在Visual Studio Express 2012(C#)中更新LocalDB文件
- 13. Microsoft Visual C++ Express編譯器是否編譯C代碼?
- 14. 在Visual Studio Express 2010中打開Visual Studio Express 2012項目
- 15. 編譯Firefox插件在Visual Studio 2012
- 16. C代碼在Visual Studio中編譯成什麼彙編語言?
- 17. 如何在Visual Studio中編譯特定的源代碼文件?
- 18. Typescript - 在Visual Studio代碼中編譯.ts文件時出錯
- 19. 在Visual Studio中通過C#類編譯C++代碼
- 20. Microsoft Visual Studio Express 2012
- 21. 無法在Visual Studio 2012中編譯TypeScript文件
- 22. 如何在visual studio 2012中編譯newley添加的源文件?
- 23. Visual Studio 2012本地C++ DLL x86編譯
- 24. G ++編譯Visual Studio代碼
- 25. Visual Studio代碼 - SCSS編譯
- 26. Visual Studio C編譯器未將頭文件鏈接到其源代碼對象
- 27. 編譯Visual Studio 2012中的錯誤
- 28. 在Visual Studio 2010中編譯`C`文件時,它是否編譯爲C++文件?
- 29. 可以在Visual Studio Express 2012上編譯Cinder嗎?
- 30. 在visual-studio-2012 express中本地化winforms
你聽起來很迷茫;十六進制只是二進制的另一種表示。 .exe是一個包含運行它所需的所有二進制文件的文件。你對這個問題的意圖是什麼? – user1167662 2013-04-23 02:28:54
構建操作系統。爲了達到最佳性能,我希望它儘可能低。 – 2013-04-23 02:36:59
你想讓這個平臺運行在什麼平臺上?構建一個操作系統並不是一件簡單的事情,我也不會試着從一個典型的PC開始,像你可能想到的那樣。從與你處於同一位置的人處獲得此信息,不知道如何製作簡單的操作系統。我通過嘗試使用樹莓派作爲平臺執行相同的任務並學習了很多,本教程:http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/。 – user1167662 2013-04-23 02:41:57