《程式設計師的自我修養 - 連結、載入、程式庫》並不是只有連結、載入等資訊, 13.3 有如何打造 c/c++ runtime library, 我忘了書上有這樣的內容, 自己查詢網路資料加上一堆反組譯, 得到類似的資料。書上沒有提到 local static object, 我的努力不算白費。
在此做個目錄方便查詢:
- 作業系統之前的程式 (1) - c++ 篇
- 作業系統之前的程式 (2) - c++ global object ctor/dtor can not be invoked
- c++ runtime - global object ctor (0)
- c++ runtime - global object ctor (1) - 兩個 global object
- c++ runtime - global object ctor (2) - 透過 elf section 來呼叫 global ctor
- different g++ version - different global object ctor implementation ~^.^~ g++ 4.4, 4.6, 4.7
- c++ runtime - dtor (0) 原理篇
- c++ runtime - dtor (1) 實作篇
- c++ runtime - local static object (0)
- c++ runtime - local static object (1)
- bare metal programming for stm32f4 - discovery: c++ exception handling(0)
- c++ exception handling 的實作 (2) - 使用 g++ 5.4.0
- c++ exception handling 的實作 (3) - __gxx_personality_v0
侯捷老師的課程, 清華大學 創新育成大樓(近寶山路與高翠路交叉口)
【C++技術講堂】C++ Under the Hood (C++底層揭密)
https://edu.tcfst.org.tw/query_coursedetail.asp?courseidori=07C342-1
* Startup Code 是什麼?它們出現在哪裡?可觸摸嗎?可修改嗎? 可利用嗎? * C Runtime (CRT) 在 C++ 程式中扮演的重要角色 * 徹底理解 C++ programs 生前死後的 每一個細節 * C++ programs 執行前 (before main) 和退出後 (after exit) 的所有 行為: mainCRTStartup, heapinit, ioinit, environment variables, argc & argv & envp, cinit, core of C Initialization, core of C++ Initialization, main(), secrets of exit. * 如何讓程式碼在 main() 之前執行 * 為什麼能夠讓程式碼在 main() 之前執行 * 如何讓程式碼在 exit() 之後執行 * 為 什麼能夠讓程式碼在 exit() 之後執行 * main() 執行前的 CRT 小區塊 (small memory blocks) 分配和釋 放 (實例觀測) * global/static objects 的 ctors & dtors 的特殊性 * CRT malloc/free 行為綜覽和實例觀察 cookies, debug headers, 16 headers, 64 groups (free-lists), 32 regions, memory management, blocks merging (de- fragment). * Debug Heap 的形成和實例觀察 * CRT Reporting Functions * virtual functions 神奇實現 OCP (Open-Closed Principle) 的 原因 * virtual functions 背後運作 (關於 vptrs 和 vtbls) * 何謂動態繫結 (dynamic binding)? 編譯形式為何? * virtual functions 的兩大應用形式:(1) Polymorphism (2) Template Method
這個課程和我的學習心得很類似。
沒有留言:
張貼留言
使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。
我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。