匯編
C++中new和delete的背后
摘要: 我們可以看到數(shù)組new[]和delete[]的關(guān)鍵是, C++編譯器在數(shù)組起始地址之前的4個字節(jié)保存了對象的數(shù)量N,后面會根據(jù)這個數(shù)量值進行N次的構(gòu)造和析構(gòu) 。
我們可以看到C++ 編譯器在背后干了很多事情,可能會內(nèi)聯(lián)我們的函數(shù), 也可以修改和產(chǎn)生其他一些函數(shù), 而這是很多C開發(fā)者受不了的事情, 所以在內(nèi)核級別, 很多人寧愿用C來減少編譯器背后的干擾。
閱讀全文
posted @
2013-11-17 21:17 Richard Wei 閱讀(5637) |
評論 (0) 編輯
理解ATL中的一些匯編代碼
摘要: 以我個人的經(jīng)驗,一些東西剛開始看不太懂就放一放,先去看一些基本的東西,比如不懂COM,先去學(xué)下C++ 中的虛函數(shù);不懂C++模板,先去學(xué)下STL;不懂Thunk,先去看一下匯編,等有了一定的積累,回頭再看,一切就覺得沒這么難了。
閱讀全文
posted @
2012-10-23 00:23 Richard Wei 閱讀(3278) |
評論 (0) 編輯
堆棧楨的生成原理
摘要: 那么Windbg分析Dump時,會如何推理堆棧過程呢?
如果每個函數(shù)都是有標(biāo)準(zhǔn)的push ebp, 那么按照ebp遞推就可以了;
否這就只能用其他方法分析,比如看看堆棧里某個地址是不是函數(shù)返回地址(該地址屬于某個模塊的代碼段),這樣就可以確定該地址是某個函數(shù)堆棧楨的起始地址。
閱讀全文
posted @
2012-07-20 14:00 Richard Wei 閱讀(5346) |
評論 (3) 編輯