3 回答

TA貢獻1828條經(jīng)驗 獲得超6個贊
匯編指令(通常)是對操作碼的直接映射,操作碼是可以由處理器直接解釋的機器代碼的(多)字節(jié)值。通過從表中查找操作碼來直接編寫程序是很有可能的(例如,該表用于6039微處理器),該表列出了具有匹配匯編指令的程序,并手動確定事物的內(nèi)存地址/偏移量像跳。
最初的程序正是以這種方式完成的-手寫操作碼。
但是,在大多數(shù)情況下,使用匯編程序來“匯編”匯編代碼會更簡單,該匯編代碼會自動執(zhí)行這些操作碼查找,并且有助于計算命名跳轉(zhuǎn)標簽的地址/偏移量等。
最初的匯編程序是手工編寫的。然后,可以使用這些匯編器來匯編更復雜的匯編器,然后將其用于匯編為高級語言編寫的編譯器,依此類推。反復編寫工具以簡化下一組工具的創(chuàng)建的過程稱為引導(如David Rabinowitz在其回答中所述)。

TA貢獻1830條經(jīng)驗 獲得超9個贊
請閱讀有關(guān)編譯器引導和編譯器編寫歷史的信息
這個想法是直接用機器代碼編寫一個非常簡單的編譯器,使用它編寫更復雜的編譯器,使用第二個編譯器構(gòu)建第三個編譯器,依此類推,直到您擁有功能齊全的編譯器為止。

TA貢獻1802條經(jīng)驗 獲得超5個贊
雞蛋早于雞肉。大多數(shù)“雞和蛋”問題的答案都是相同的:進化。某些人也難以相信生物進化,但不相信不是一個論點(谷歌argumentum ad ignorantiam)。
為了直接回答您的問題:第一個編譯器是用匯編語言(由人類編寫的)的,一個稱為匯編程序的程序會將匯編語言轉(zhuǎn)換為二進制。這是比編譯簡單得多的過程,因為匯編語言只是機器語言的一種符號形式,它使用操作碼名稱而不是數(shù)字,用符號表示地址,等等。許多后續(xù)的編譯器也都是用匯編語言編寫的。但第一C編譯器是一個修飾的B類的編譯器,其寫于乙。第一個B編譯器是用TMG編寫的。TMG編譯器用來編譯B編譯器是用PDP-7匯編語言編寫的。
- 3 回答
- 0 關(guān)注
- 1008 瀏覽
添加回答
舉報