匯編程序與程序代碼是什么關(guān)系?
感謝邀請。
首先要弄清楚問題,根據(jù)自己的理解我把問題重新翻譯一下歡迎指正:
匯編程序代碼與非匯編程序代碼(比如c語言,C#,Java)有什么關(guān)系?
1.匯編語言是一種面向CPU的低級語言,它是與CPU指令集一一對應(yīng)的助記符號,匯編語言寫完后簡單解釋就可直接轉(zhuǎn)化為機(jī)器可以識別的機(jī)器語言,中間不需要其他過程所以效率很高
2.普通的非匯編程序代碼(比如C語言,C#,Java等)屬于面向程序員的高級語言,它更接近人的思維,語法相對固定,只有通過特定編譯規(guī)則的編譯器進(jìn)行編譯才能轉(zhuǎn)化成機(jī)器可以識別的機(jī)器語言,所以效率相對匯編語言來說較低。
分開來看1和2都是獨(dú)立的計算機(jī)語言,都可以在各自擅長的領(lǐng)域進(jìn)行軟件開發(fā),沒有直接的關(guān)系。
但是高級語言在編譯后生成二進(jìn)制可執(zhí)行程序過程中會轉(zhuǎn)化成匯編語言,所以很多破解軟件利用反匯編技術(shù)把源代碼還原分析找出漏洞加以破解,同樣我們也可以利用這個機(jī)制
來深度調(diào)試程序分析bug。
VisualStudio開發(fā)時 當(dāng)程序運(yùn)行到斷點處停止依次點擊調(diào)試->窗口->反匯編;英文顯示為"Debug"下的"Windows"子菜單,選擇"Disassembly" 來查看匯編代碼。
Java開發(fā)時需要用HSDIS插件來查看匯編代碼。
匯編語言與其他語言沒有直接關(guān)系,換個角度考慮高級語言(C語言,Java語言等)編譯時
會生成匯編代碼進(jìn)而轉(zhuǎn)化成二進(jìn)制可執(zhí)行程序,存在這種關(guān)系。
歡迎留言討論,也歡迎私信。