『壹』 在計算機中,將匯編語言轉換為機器語言的過程叫
在計算機中,將匯編語言轉換為機器語言的過程叫匯編,或者匯編過程。
匯編語言稱為符號化的機器語言,不能直接執行,需要將匯編語言轉換為機器語言後才能執行,將匯編語言程序轉換為機器語言程序的過程稱為匯編過程。
匯編大多是指匯編語言,匯編程序。把匯編語言翻譯成機器語言的過程稱為匯編。在匯編語言中,用助記符(Memoni)代替操作碼,用地址符號(Symbol)或標號(Label)代替地址碼。這樣用符號代替機器語言的二進制碼,就把機器語言變成了匯編語言。於是匯編語言亦稱為符號語言。用匯編語言編寫的程序,機器不能直接識別,要由一種程序將匯編語言翻譯成機器語言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統軟體中語言處理的系統軟體。
『貳』 為什麼編譯器後端生成的是匯編而不是c語言
編譯器後端生成的應該是機器語言,也就是二進制語言。
匯編語言和機器語言一一對應,所以有時調試顯示的是匯編而已。
至於為什麼是機器語言而不是C,是因為編譯的目標是給機器運行用的,機器只能"看懂"機器語言。
『叄』 匯編語言或C語言 如何生成 機器代碼
匯編語言或C語言經過編譯器編譯連接,就會生成HEX文件,將HEX文件轉換成BIN文件,這個BIN文件就是純粹的機器代碼了。
『肆』 匯編語言 怎樣 在計算機中 解釋成 機器語言 以及它在計算機中如何一步一步運行
獻丑了,學長,我是大一軟體工程的新生,自學過幾天匯編語言,我的看法是(不要笑我,看了你們的對話,感覺很深奧,有感而發):所有的指令(即「軟體)」都在運行時被操作系統裝入內存,指令也是「數據」,對cpu來說,傳給他的只是一系列的1010這樣的二進制數據,這一系列的二進制指令直接體現為高低電平。這一系列高低電平以一定的順序輸入cup的數據匯流排(輸入端),然後控制cup內部的龐大電路進行改變,cpu也會根據相應的變化做出輸入輸出的「動作」。其實這些軟體已經是二進制指令序列了,只要cpu去讀他cpu就自己認得,知道該干什麼,可見cpu有多復雜,難怪中國造不出好的來。編譯這個過程是由編譯器執行的,把匯編語言翻譯成機器語言(二進制的指令序列)。至於世界上第一個編譯器,我猜真是用機器語言寫出來的。 要說這個翻譯的過程的話···這個我還不懂,但我知道,這東西真不是三言兩語就能說清楚的。 推薦你復習一下數字邏輯以獲得對cup執行程序的底層感性理解。 然後再深入理解一下匯編語言和編譯原理。也許那是你就理解的更深了···o(︶︿︶)o 雖然我也不太了解,或許那些你在就知道,我只是想說出我知道的一點點,希望能「幫到」你這個比我高出n級的學長。 其實翻譯的過程是純軟體的叫編譯器的傢伙做的,cpu執行編譯器,編譯器(編譯器本身就是一堆零和一的機器碼)把那堆匯編代碼當作一堆數據,以一定的演算法把這批數據轉換成由零和一組成的另一批數據,而這批由零和一組成的數據就是目標程序(轉換成cpu可以認得的格式)。當CS和IP指向他(cpu開始讀取並執行這些機器碼),執行他的時候,這對看似混亂的數據就成了「軟體」。把這堆被稱為程序的零一序列寫到硬碟里存起來後就成了我們熟知的可執行程序。不知道學長看完後有何感想,雖然好多想法尚且幼稚,不過沒關系,純粹為了交流思想。
『伍』 編譯程序將高級語言程序翻譯成與之等價的機器語言程序,該機器語言程序稱之為_
目標程序。
編譯過程的第一階段主要任務是對源程序從前往後(從左往右)逐個字元掃描,從中識別出一個個單詞符號,單詞是程序設計語言的基本語法單位,如關鍵字、標識符等。
中間代碼生成階段的主要任務是工作是根據語義分析的輸出生成中間代碼。最常用的中間代碼是與匯編語法的指令非常相似的三地址碼,常採用四元式。
(5)編譯器生成機器語言擴展閱讀:
注意事項:
弄清楚整體流程,掌握全局才能形成清晰的思路,就如同寫作文要先寫提綱一樣。
做介面時,要考慮使用者的感受是否易用,並且盡可能少的向使用者暴露內部的實現過程,簡化使用過程。
正常分支總是少數,大部分情況下都是異常分支,可以用2-8定律來形容,因此對異常處理很重要。
發現問題不可怕,每一個問題都有其根本的原因,且一定要有追根究底的精神,如果最可能出問題的情況都已經排除,則應當換個角度從一些不起眼的地方重新查起。
『陸』 機器語言是匯編語言轉過來的嗎。就像高級語言通過編譯器轉到匯編語言,似得。請詳解。
機器語言 可以是人工編制,最好人們就用機器語言編程的,十分十分的辛苦和容易出錯。
機器語言當然不是匯編語言「轉」過來的,匯編語言經過編譯會最終生成機器語言。高級語言編譯後也不是生成匯編語言,而是生成機器語言,CPU只認機器語言。
『柒』 編譯器為什麼會生成匯編語言而不是機器語言
計算機只能識別二進制代碼,所以機器指令是由二進制代碼組成的,即你所說的機器語言。所謂匯編語言,只是一種符號,用來方便人們使用,否則你看到的都是一串串的01011011之類的信息,一眼就認出它是什麼指令非常困難,而用匯編語言這種符號,一看就知道是什麼指令了。這種符號語言用助記符來表示操作碼,用符號或符號地址來表示操作數或數地址,它與機器指令是一一對應的。(樓上各位表述的所謂「步驟」論是不確切的)
所以,並不是你說的「生成匯編語言而不是機器語言」,生成的是機器語言,你在調試器或反匯編程序中看到的匯編語言代碼只是由反匯編程序把機器指令翻譯成你看得懂的符號--匯編語言--而已。(比如你在OD或IDA中可以看到每行匯編指令前面都有機器碼,如push ebp的機器碼是55h,單看55,你不是熟手的話可能還不知道它是什麼指令,後面給你顯示出符號"push ebp",你一下子就明白了,這就是一一對應的關系,連"55"都是為了讓你看的方便,否則應是01010101,即8個電子元件的電源開、關狀態)
同樣的道理,你在十六進制編輯器(如winhex、HexWorkShop等軟體)中看到的是十六進制每行16位元組排列的,那也是經過把二進制代碼每位元組轉換成十六進制顯示給你看的。
關於平台問題,當然會有影響,不同的CPU有不同的指令系統,就連同一廠家的CPU指令系統都不同,比如Intel公司的CPU,從最早的到現在的,指令不斷增多,什麼MMX、SSE等等新指令集不斷出現,更不要說不同廠家的CPU了。當然它們之間也有很多兼容的指令集。
『捌』 高級語言寫好之後需要編譯器編譯成機器語言 那是不是C語言 java python等都要編譯 這些編譯器誰開發的
C語言最早的編譯器是用匯編開發的,後來的就可以用C開發了
Java和Python屬於解釋性的語言,
Python的解釋器是用C語言開發的。
每種語言有自己擅長的地方,也有自己的缺點。
『玖』 編譯程序可以將高級語言變成機器語言嗎
將高級語言轉換成由0,1構成的機器語言需要通過編譯程序來實現。即可轉化成機器語言。
機器語言是一種指令集的體系。這種指令集,稱機器碼,是電腦的CPU可直接解讀的數據。
機器碼有時也被稱為原生碼,這個名詞比較強調某種編程語言或庫,它與運行平台相關的部份。