開發語言小傳之二 進化後的機器語言 組合語言

2021-06-27 21:56:51 字數 1047 閱讀 9001

為了寫本文,我在網上搜尋組合語言的發明者,結果出乎意料,幾乎找不到!後來又搜尋英文**,才在ask**(上找到乙個回答,是nathanialrochester和stan poley。正如ask那個回答所說的那樣,組合語言與其說是被發明出來的,還不如說是自然而然進化、發展出來的。當然,這不能說最早想到這個點子的人不重要。

我想,之所以組合語言不如其他流行高階語言的發明者那樣,名字廣為人知,主要是組合語言跟計算機的體系設計密切相關,不同型號的機器有不同的設計,組合語言這種本質上只是機器語言的簡單對映(早期時候),因為不同的機器而完全不同,所以最初的設計者只是設計思想被傳播,實際的指令什麼的每種機器都要重新弄一遍,當時各種體系計算機數目又很多,所以才把設計者輕易的湮滅掉了。

我們知道,最早出現的電子計算機是靠機器語言,也就是二進位制來操縱的。要想表達乙個指令,要在卡片或者紙帶上打上一大堆表示0或1的孔。不用說別的,光是核對一遍就夠讓人頭疼的。於是在1949年末,1950年初的時候,匯程式設計序的雛型在電子離散時序自動計算機 edsac上研製成功的。這是非常簡單、初級的指令系統,比如「a 128 f」,「a」表示加(add),「128」表示位址,「f」是終結字母。要知道,當年的儲存器都是非常昂貴的,連組合語言本身字元佔位都是要節約的,能少則少!上面那條最早的彙編指令,換算成二進位制是11100000100000000,要佔17位元(bit)。

第乙個匯程式設計序是符號優化匯程式設計序(soap)系統﹐它是50年代中期為ibm650計算機研製的,是匯程式設計序發展中的乙個重要里程碑。此後的匯程式設計序大都以這一系統為模型﹐其主要特徵至今未發生本質的變化。隨著計算機軟體的高速發展和廣泛應用﹐匯程式設計序又吸收了巨集加工程式﹑高階語言翻譯程式等系統的一些優點﹐相繼出現了巨集匯程式設計序﹑高階匯程式設計序等。    

※來自《coding forthe mit-ibm 704 computer》。

組合語言是對機器語言(二進位制)的抽象,用人容易記憶、理解的字母符號代替直接的二進位制。但它本質上依然是面向機器的語言,每乙個語句都能對應上機器指令,一步步告訴機器(主要是cpu)該幹什麼。組合語言一直都是跟機器直接打交道的最有效手段,今天也是。但現在基本侷限於需要跟機器直接打交道驅動程式、作業系統底層跟硬體結合部分、嵌入式工業晶元等領域。

操作二進位制寫入二進

操作二進位制 寫入二進位制 1 宣告變數 sqlite3 stmt stat 2 把sql語句解析到stat結構中去 sqlite3 prepare 3 繫結替換 sqlite3 bind blob 4 儲存到資料庫 int result sqlite3 step 5 釋放stat結構 sqlite...

iOS SDk開發之二

經過了緊張的第一周開發,sdk雛形已基本搭建完畢,今天解決了幾個大的bug。晚上放鬆下。聊一下最近的收穫 對於這個sdk開發,我主要是負責總體的架構,最初選擇開發模式的時候,我選擇了近似於afn 的設計模式,利用乙個單例 模組開發,把sdk內部分為管理者乙個總的排程者,和網路,動畫,資料,介面四個主...

mysql儲存二進位制 mysql 儲存二進位制資料

晚上小研究了下mysql儲存於讀取二進位制資料的功能。關鍵步驟為以下三點 最重要的一點 儲存二進位制資料的表的型別需要是blob型別 按長度不同分為tiny,media,long 插入二進位制資料時需要利用mysql real escape string函式對資料進行轉換 從資料庫中讀取二進位制資料...