顯示具有 content 標籤的文章。 顯示所有文章
顯示具有 content 標籤的文章。 顯示所有文章

2015年12月10日 星期四

c++ runtime article content

這是我研究 c++ runtime 時的文章, c++ runtime 是什麼呢? 就是你看到的 c++ 魔法是怎麼做出來的, global object ctor/dtor, static object, exception handle 是怎麼實作的?

程式設計師的自我修養 - 連結、載入、程式庫》並不是只有連結、載入等資訊, 13.3 有如何打造 c/c++ runtime library, 我忘了書上有這樣的內容, 自己查詢網路資料加上一堆反組譯, 得到類似的資料。書上沒有提到 local static object, 我的努力不算白費。

在此做個目錄方便查詢:

侯捷老師的課程, 清華大學 創新育成大樓(近寶山路與高翠路交叉口)
【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

這個課程和我的學習心得很類似。

2015年9月17日 星期四

bare-metal for stm32f4 discovery board content

這系列太多篇了, 連自己也找不到, 做個目錄方便查詢
  1. 作業系統之前的程式 for stm32f4discovery (0) - 打造 linux 開發環境
  2. 作業系統之前的程式 for stm32f4 - discovery (0.2) - p103 模擬器
  3. 作業系統之前的程式 for stm32f4discovery (0.5) - newlib
  4. 作業系統之前的程式 for stm32f4 - discovery (1) - 1 加到 10 , asm version
  5. 作業系統之前的程式 for stm32f4discovery (2) - 點亮 led, c version
  6. 作業系統之前的程式 for stm32f4discovery (2.5) - c++ 篇
  7. 作業系統之前的程式 for stm32f4discovery (3) - usart
  8. 作業系統之前的程式 for stm32f4discovery (4) - two stack
  9. 作業系統之前的程式 for stm32f4discovery (5) - pendsv interrupt
  10. 作業系統之前的程式 for stm32f4discovery (6) - systick
  11. 作業系統之前的程式 for stm32f4discovery (7) - mpu
  12. 作業系統之前的程式 for stm32f4discovery (8.1) - user button by polling
  13. 作業系統之前的程式 for stm32f4discovery (8.2) - user button by 外部中斷
  14. 作業系統之前的程式 for stm32f4discovery (9) - CCM
  15. 作業系統之前的程式 for stm32f4discovery (10) - 印出浮點數
  16. 作業系統之前的程式 for stm32f4discovery (10.2) - 印出浮點數, 使用硬體浮點運算器
  17. 作業系統之前的程式 for stm32f4discovery (11) - 找出 stm32f4 simple scheme 記憶體使用量
  18. 作業系統之前的程式 for stm32f4discovery (12) - 實作 printf
  19. 作業系統之前的程式 for stm32f4discovery (13) - 打造 c++ 標準程式庫
  20. 作業系統之前的程式 for stm32f4discovery (14) - 打造 1ms timer 使用 systick
  21. 作業系統之前的程式 for stm32f4discovery (15) - 打造 1ms timer 使用 timer3
  22. 作業系統之前的程式 for stm32f4discovery (16) - spi
  23. 作業系統之前的程式 for stm32f4discovery (16.3) - spi1 與 spi2 對接
  24. 作業系統之前的程式 for stm32f4discovery (17) - sd card 初探 by spi
  25. 作業系統之前的程式 for stm32f4discovery (18) - 在 sd card 上使用 fat 檔案系統
  26. 作業系統之前的程式 for stm32f4discovery (18.3) - 載入並執行 sd card 上的 elf
  27. cm3 system call 實作 - get_ticks
  28. stm32f4discovery system memory - boot loader
  29. 作業系統之前的 scheme
  30. process switch for stm32f4discovery (0) - 小試身手
  31. process switch for stm32f4discovery (1) - 保存所有暫存器
  32. process switch for stm32f4discovery (2) - save/restore stack