你知道彙編與反彙編的區別嗎?

2021-07-24 09:49:03 字數 953 閱讀 4940

本人不才,小白一枚,今天在看書的過程中被彙編、反彙編這兩個詞搞懵了。趕緊用了搜dog,發現講的都不是很清楚,這裡說一下我的總結。有什麼不對的大家見諒。

彙編、反彙編這兩個詞可做動詞,可做名詞。

我們先看乙個圖,乙個c程式如何變成乙個可執行程式。

(ps:這個圖主要為下面講解用,具體不再講解,感興趣的自行查詢)

動詞,指的是把組合語言翻譯成機器語言的過程。

就是圖中hello.s檔案經過彙編器變成二進位制hello.o檔案的過程。

名詞,指的便是組合語言

就是hello.c經過預處理器,再經過編譯器生成的hello.s檔案。這個檔案裡的東西就叫匯程式設計序(組合語言)。

在linux檢視.s檔案(ps:源程式為test.c)

我們可以輸入gcc -o -s test.c直接生成test.s檔案,然後用vim編輯器開啟它。

gcc -o -s test.c

vim test.c

可得到:

動詞,指的是由已生成的機器語言(二進位制語言)轉化為組合語言的過程,也可以說是彙編的逆向過程。

名詞,指的是有機器語言經過反彙編過程生成的組合語言。

在linux下對利用反彙編器對.o檔案進行反彙編。

objdump -d test.o

得到:

我們可以發現,反彙編生成的彙編**,每一行前面都有一串16進製制的數字。這些數字就是每一行彙編**對應的機器**。

希望這些對你有所幫助!

彙編與反彙編之小技巧

大家都知道,對於位於當前除錯目標中的指令,可以使用windbg的u命令進行反彙編。u命令的引數是要反彙編 的位址值或者符號,如果不指定,那麼windbg會使用當前程式指標暫存器所指向的 例如 0 001 u ntdll dbgbreakpoint 7c901230 cc int 3 7c901231...

ref與out的區別 反彙編篇

using system using system.collections.generic using system.linq using system.text namespace refout y x,y tp.changewithoutref x,y console.writeline 沒加r...

裝置樹編譯與反彙編

1.編譯最新的核心 第一步 tar xvf 解壓核心 第二步 make arch arm x deconfig 第三步 make arch arm cross compile 2.如何編譯裝置樹 dts dtc編譯器 裝置樹原始碼dts檔案 編譯成二進位制檔案dtb 在scripts dtc目錄下 ...