編譯和反編譯彙編語言

最近在學習深入理解計算機系統,撿了撿之前丟掉的彙編語言。不過那時候學習的是8086單片機,從未接觸過gcc,現在想起來,總覺得別有一番風味。。。

不廢話了,編譯彙編語言文件的方法:

gcc -O1 -c  xxx.s

這裏,優化速度可以選擇,O0(大o,零,每次寫這種符號總覺得很蛋疼Oo0000oooOO0)是不優化。如果使用的是64位的gcc,那麼,可以使用如下命令進行編譯:

gcc -O1 -m32 -c  xxx.s

編譯完成之後會生成xxx.o的文件,然後就可以使用objdump工具查看機器碼啦:

objdump -d xxx.o

例如,xxx.s中寫了如下代碼:

xorl %edx, %edx
movl $0, %edx

機器碼如下:

   0:   31 d2                   xor    %edx,%edx
   2:   ba 00 00 00 00          mov    $0x0,%edx

簡單來說就是這樣,這是進入瞭解彙編和反彙編最基礎的東西,然後,enjoy一下yy的黑客feeling吧:)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章