2010-11-16 43 views
23

我知道這可能看起來很古怪,但是我認爲遇到古代程序員之前經歷的一些有趣的事情。那麼我該如何執行一個只能用二進制編寫的程序呢? (假設我知道自己在做什麼,而不是使用程序集。)我可以直接用二進制編寫程序嗎?我怎樣才能讓電腦執行它?

我只想寫一系列像111010111010101010101這樣的位並執行它。那我該怎麼做?

+13

您將無法執行'111010111010101010101'。第二位有語法錯誤。 ;) – gnovice 2010-11-16 17:30:31

+1

我認爲你不能改用一些編程語言和編譯器或編寫一個批處理文件。 – Pratik 2010-11-16 17:30:34

+2

十六進制編輯器*有點工作*。儘管如此,沒有任何舒適的選擇...程序集已經是一個婊子,沒有助記符的樂趣。 – delnan 2010-11-16 17:30:35

回答

43

使用十六進制編輯器。當然,您需要找到操作系統的相關可執行格式 - 假設您想要使用操作系統......我想您可以隨時編寫自己的引導加載程序並直接以此方式運行代碼,如果你想得到所有的核心。

我不認爲你會真的經歷什麼樣的程序員經歷當年雖然 - 一件事,你會不會使用打孔卡,紙帶等。另一個是你的背景是完全不同的 - 你知道什麼樣的電腦像現在,所以它會感到痛苦原始的你......然而當時,它會在這些理由上是流血的邊緣和令人興奮的。

+5

用晶體管和開關進行編程怎麼樣? – CMCDragonkai 2014-07-26 07:47:08

+0

如何在磁盤上使用磁化針進行編程? – 2017-04-19 20:59:13

5

使用十六進制編輯器來創建您的文件,請務必使用您的操作系統的加載程序理解的格式,然後雙擊它。

16

使用十六進制編輯器,寫入您的位並將其保存爲可執行文件(無論是在Windows中使用文件擴展名.exe還是在Linux中使用chmod a+x filename)。

問題是:您還必須以二進制格式編寫所有特定於操作系統的東西,並且您必須具有一個可以從彙編代碼轉換爲二進制東西的表格。

爲什麼不,如果你想體驗低級編程,請給D.E. Knuth的彙編程序MMIX試試嗎?

9

這真的取決於您使用的平臺。但基於你提出的目的,這是無關緊要的。現代計算機中最早的程序員,如你所想的那樣,而不是二進制程序 - 它們在程序集中編程。

使用十六進制編輯器,您不會學習任何嘗試以特定操作系統和特定CPU類型的二進制程序進行編程。

如果您想了解預組裝程序員如何工作(使用純二進制數據),請查找。

2

或者他只是寫一些惡意代碼。 我見過一些有趣的方法,使用AVR作爲鍵盤模擬器,打開一些簡單的文本編輯器,寫入AVR eeprom內存中的代碼,並將其調試到「調試」(在Windows系統中),然後運行它。這是逃避一些限制太多的好辦法;)

4


大多數編譯器(MMIX彙編比如看到www.mmix.cs.hm.edu)不關心,如果 你寫指令或數據。

所以不是wirting

 
Main ADD $0,$0,3 
    SUB $1,$0,4 
    ... 

你可以寫

 
Main TETRA #21000003 
    TETRA #25010004 
    ... 

所以這種方式,您可以組裝手工程序,然後有了彙編改造它的形式加載器需要。然後你執行它。通常你使用十六進制不是二進制的,因爲跟蹤這麼多的數字是困難的。您也可以使用十進制,但是告訴您哪些指令具有哪些代碼通常以十六進制表示法的圖表。

祝你好運!當我開始編程計算機時,我不得不這樣做。每個人都很高興有一個彙編程序甚至編譯器。 Martin

2

我想通過直接與硬件交互可以用二進制編寫。要翻轉正確的二進制位,可以在磁盤驅動器上使用磁化針。或蝴蝶。

相關問題