我想了解一下電腦最初的工作方式。我最初用ENIAC等計算機知道,他們實際上必須按照正確的順序插入電線,以使其程序執行。他們後來使用打卡,最後提出彙編語言。它只是從那裏用FORTRAN,COBOL等向上建立。有沒有什麼辦法可以在我的電腦上編譯0和1。如果我打開textedit,然後鍵入一個零和一個特定的序列,那麼我怎樣才能使這個二進制文件而不是一個ASCII字符序列的文本?我願意接受任何方法。 (免責聲明:我知道在二進制中做事需要永遠,我只是想學習如何非常基本的東西。)編譯二進制文件
編譯二進制文件
回答
要做到這一點,最簡單的方法是從您選擇的彙編器開始,如果您願意,可以在IDE中啓動。使用某種調試器(如IDE),以便您可以看到代碼的效果,而無需寫入控制檯或文件。
與其僅寫入二進制文本數字,不如使用數據元素而不是指令編寫完整的彙編源代碼。
所以,與其
.code
main proc
mov eax,5
add eax,6
main endp
end main
你可以寫:
main proc
db 10111000b, 00000101b, 00000000b, 00000000b, 00000000b
db 10000011b, 11000000b, 00000110b
main endp
end main
db
方式定義字節和b
後綴意味着二進制文件。
而且,有了這個,你會被設置爲作弊,但我不會告訴你,直到你問,所以我不會破壞你的樂趣。
這裏是一個很好tutorial在Windows入門MASM和Visual Studio 2015年
這也是一個很好的答案,但當時它打破了我的想法。 – chevydog
創建二進制數據流的方式很大程度上取決於其目的。
二進制數據本身並沒有太大的魔力。您可以使用任何十六進制編輯器並開始輸入所需的二進制輸入。
但是,這不是現在如何編程計算機。如果您真的想進入最低級別,您可以看看彙編編程,它基本上允許您以更方便的方式告訴機器應該執行的確切指令。
但即使在這裏,你也不會有太多樂趣。如果你希望能夠實際執行你的程序並在你的顯示器上看到一些結果,或者甚至是鍵盤輸入等,那麼代碼會變得非常大,很難爲人類編寫和理解。
這就是我們使用編譯器的原因。編譯器使用高級語言生成這樣的代碼,並且不需要一遍又一遍地寫入最小的指令塊。
如果你真的只是想了解計算機的工作原理,請下載一個簡單的CPU模擬器(可能有一個很好的圖形用戶界面) ,並與它一起玩。 Edumips是用於教育目的的那些模擬器之一。
- 1. pip編譯vs二進制文件
- 2. 使用VexCL「編譯二進制文件」
- 3. 反編譯非PC二進制文件
- 4. 如何編譯二進制文件?
- 5. GCC編譯的二進制文件給予 「不能執行二進制文件」
- 6. g ++編譯的二進制文件給「不能執行二進制文件」
- 7. gdb:使用-g編譯的二進制文件與使用-g編譯的二進制編譯的代碼
- 8. LLVM編譯JIT二進制
- 9. 編譯matlab linux二進制
- 10. 將XML文件編譯爲二進制文件
- 11. 二進制翻譯|交叉編譯
- 12. 編寫:: UndefinedConversionError編寫二進制文件
- 13. 用於編譯原始二進制文件的Windows的C編譯器?
- 14. 指定Xcode用於編譯的二進制文件
- 15. 將x86 PE二進制文件反編譯爲C?
- 16. 如何將GCC編譯爲靜態二進制文件?
- 17. 如何將資源編譯成Haskell中的二進制文件?
- 18. 已編譯的dalvik二進制文件之間的差異
- 19. 將一個文件「反編譯」爲原始二進制代碼
- 20. 在Amazon MapReduce上調用已編譯的二進制文件
- 21. 可以將ruby腳本預編譯爲二進制文件嗎?
- 22. 是否將C#代碼編譯爲本機二進制文件?
- 23. 編譯x86系統上的C#.NET x64二進制文件
- 24. 在SBT本地發佈預編譯X二進制文件
- 25. gcc:在32位平臺上編譯64位二進制文件
- 26. 打包編譯後的二進制文件/ w a Ruby Gem
- 27. 檢查是否編譯了「-static」的二進制文件
- 28. 將PHP編譯爲靜態二進制文件
- 29. 如何檢查哪個#define被編譯爲二進制文件?
- 30. qemu-arm無法運行arm編譯的二進制文件
這可能是對你有意思:https://en.wikipedia.org/wiki/Executable –
是的!有很多有趣的方法來做到這一點。但編碼二進制可能會殺了你的臉,讓你放棄。我個人建議編寫一些彙編代碼。 這是一個很好的ASM教程。這裏有一個與學習裝配有關的問題(更多資源!) – DrSatan1