# 開發工具和規格標準 [筆記] contributed by <`DyslexiaS`> ###### tags: `System-Software-2018` * [講座共筆](https://hackmd.io/s/HJFyt37Mx#) * [直播影片](https://www.youtube.com/watch?v=scLFY2CRtFo) --- :::success 多看規格書! [Committee Draft](http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf) ::: ## Why C ? 1. 開發 UNIX 2. 掌握硬體 3. C 語言的編譯器也用 C 寫 4. C: designated initializer C99 ( C++ 沒有) 5. lvalue 6. forward declaration :::danger 注意拼字,是 "designated" :notes: jserv ::: ## GDB :::info 1. p(print) - 印出變數資訊 - 變更記憶體內容 - 動態時期可呼叫函式 (改變執行順序) 2. gcc -g3 可將 macro 打開 - ``` (gdb) macro expand ``` --- 純量改成 pointer type - ``` (void *) address``` ::: ### 編譯器最佳化 - gcc -Og (對 debug 做最佳化) - gcc -O0 (不做任何最佳化) - gcc -S -O2 (基本最佳化) - sizeof() 是 operator 不是 function ### Perf + 權限全開 `$ sudo sh -c " echo -1 > /proc/sys/kernel/perf_event_paranoid"` + 測試 ```bash $ gcc cache_miss.c -o main $ perf stat --repeat 5 -e cache-misses,cache-references,instructions,cycles ./main ```