分享到plurk 分享到twitter 分享到facebook

User/sammer1107

林育任

簡介

  • 成功大學 工程科學系110級

聯絡資訊

  • email: qscesz871107@gmail.com

2020秋季班 個人評量

作業筆記

心得

工具的使用 (Makefile, perf, valgrind)

如果要說這堂課給我最實用的影響是什麼,那應該就是學會 Makefile 怎麼寫。雖然之前就知道這個東西,但是一直都沒能把這東西弄熟。由於這堂課的作業幾乎都會使用到 make,在整學期下來我發現已經能夠熟悉基本的語法,並在自己開發 c 程式的時候都能享受到 makefile 的便利。Makefile 真的是好用的東西,雖然有很多不太好讀的特殊符號。

另外 perf 及 valgrind 也是因為這堂課才學會使用的工具。在自己開發 c 程式的時候,valgrind 是檢查 memory leak 或是檢查存取到不該存取的記憶體很好用的工具。perf 則是做效能分析很好的工具,雖然目前我會使用的功能只有冰山一角。

代數 & bitwise magic

除了工具的使用之外,把群論套用在二補數的觀念也讓我印象深刻。剛好這學期到數學系修了代數,能夠馬上和 computer science 做點聯結還蠻有趣的。再來同樣讓我覺得有趣的是各種的 bitwise 魔法以及數值運算魔法,包含取絕對值、取餘數或是 leet code 的 single number 等等的,這些都讓我覺得特別有趣。

養成看 c 標準的習慣

我第一次看 c 語言的標準應該是因為這堂課,這才發現想要真的理解一個語言真的得看標準。有太多神奇的行為如果不看標準還真的不會完全理解。

RISC-V

這次的期末 project 討論的是 rv32emu-next,而這是我第一次接觸模擬器的實作。當初會選這個題目就是因為覺得「電腦上可以模擬電腦」的點子實在很酷。 作業內容主要是理解 direct threading 應用在模擬器的 main loop 的技巧,以及整合 riscv-compliance 來驗證模擬器的正確性。

Direct threading 讓我體會到儘管我們有了「程式語言」作為 programmer 和機器的介面,但是如果想要發揮機器最大效能,還是得真正了解機器運作機制(如 caching、branch prediction),這也是這堂課有多次提到的主題。

riscv-compliance 則是讓我蠻有成就感的部份。因為要整合得要先學會編譯 riscv gnu toochain,然後看懂 compliance 內有點複雜的 Makefile 運作機制,還得要看懂各種 assembly 的 macro,時不時也要參考 riscv 的標準。所以成功整合之後還蠻開心的。

自我評量分數 (1 到 10 級分)

我給自己這學期的課堂參與 8.9 分。雖然已經學到不少東西,但是期末因為準備考試的關係沒辦法在期末 project 做比較深算是可惜之處。