多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 反匯編調試死循環

反匯編調試死循環

來源:程序員人生   發布時間:2015-01-15 08:29:47 閱讀次數:2939次

在 《C圈套與缺點》中,出現以下的代碼:

#include <stdio.h> int main(int argc, char *argv[]) { int i = 0; int a[10]; for(i=0; i<=10; ++i) { a[i] = 0; // 死循環 } return 0; }

作者的解釋是:如果用來編譯這段程序的編譯器依照內存地址遞減的方式來給變量分配內存,那末最后將賦值給變量 i ,墮入死循環。


將程序在VC6.0 運行,查看反匯編代碼:



從結果中,可知內存的分配結果是依照地址遞減的方式給變量分配內存的:



結果中,a[i] = 0 的反匯編代碼是  mov  dword ptr [ebp+ecx*4⑵Ch], 0

其中 ecx 是 i 的數值,ebp - 2CH  = ebp - 44, 實際上就是 a[0] 的位置, i 占4個字節,a[10]占40個字節, 共44個字節。

mov  dword ptr [ebp+ecx*4⑵Ch], 0 也即是 mov  dword ptr [ebp⑵Ch+ecx*4], 0  

就是在a[0] 的地址上,每次加上 i 個單位的整數地址(4個字節)

當最后1個數值 i = 10 的時候, 變成了 mov dword ptr [ebp - 4], 0, 實際上就是給 i 賦值,這條語句就是第1個斷點位置的反匯編代碼,自然的,i 又被重新賦值為0, 墮入了死循環。


這是自己第1次使用反匯編來調試程序,簡單記錄 。


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧美日韩中文国产一区二区三区 | 久久综合久久精品 | 亚洲一区二区三区高清 | 日韩性大片免费 | 老司机福利在线播放 | 免费大黄网站在线观 | 免费片子| 国产精品成久久久久三级 | 日本人成免费大片 | 最新国产在线观看福利 | 欧美男人的天堂 | 亚洲 成人 欧美 自拍 | 午夜影院在线观看免费 | 337p日本欧洲亚洲大胆色噜噜 | 一级毛片一级毛片一级毛片aaav | 女人毛片a毛片久久人人 | 国产欧美另类 | 黄大片日本一级在线a | 国产一区二区三区久久精品 | 欧美成人h版在线观看 | 高清视频在线观看+免费 | 国产精品一区在线麻豆 | 欧美头交videos在线播放 | 欧美激情videossex护士 | 最新色网址 | 欧美黑人巨大videos精 | 最近中文免费字幕1 | 精品三级内地国产在线观看 | 久久久久久久国产 | 伊人久久大香线蕉综合7 | 午夜5060 | 看一级毛片国产一级毛片 | 久久com | 狠狠躁天天躁 | 中文字幕日本在线视频二区 | 国产日产欧美精品一区二区三区 | 日本一级α一片免费视频 | 亚洲 欧美 日韩 另类 | 国产亚洲一级精品久久 | 波多野一区二区 | 日本特黄特色大片免费播放视频 |