標籤:彙編和反組譯碼的區別
在linux系統下編寫如下代碼:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/74/95/wKiom1YiRNzSWe5FAAAPiXZ4JAg425.gif" title="c函數.gif" alt="wKiom1YiRNzSWe5FAAAPiXZ4JAg425.gif" />
通過指令:gcc -S main.c 將產生main.s檔案即就彙編檔案(在上篇部落格我已提到過)。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/74/92/wKioL1YiRZrTFol4AAApnZKv7gc126.gif" title="彙編.gif" alt="wKioL1YiRZrTFol4AAApnZKv7gc126.gif" />
通過指令:gcc -c main.c 產生main.o(二進位檔案)
再通過指令:objdump -d main.o產生反組譯碼
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/74/95/wKiom1YiRn2hj-x5AAA17eql_jo005.gif" title="反組譯碼.gif" alt="wKiom1YiRn2hj-x5AAA17eql_jo005.gif" />
反組譯碼是基於機器代碼的檔案中的位元組序列來確定彙編的代碼。
左邊為位元組序列值,右邊為反組譯碼代碼。
通過上面的比較可以得出下面結論;
1、從代碼上看彙編和反組譯碼的指令基本一樣。
2、彙編操作的立即數是十進位,二反組譯碼操作的立即數是十六進位(即就是左邊序列的某個值)。
3、彙編和反組譯碼操作(寄存器或儲存空間)的地址也不同。
總結:
其實很我是這樣理解的,不知道對不對。
大家都吃過肉吧?彙編和反組譯碼就是豬和肉的關係。自己理解。。不知道對不對。希望指正。
彙編和反組譯碼的區別