Re: [心得] ARM System Developer's Guide
Chapter 5
Efficient C Programming
這本書約 700 pges, 如果只想看精華, 就是這一章了
這章的主題是 C code 和 assembly 之間的對應
我一直到學會這件事, 才敢小聲的說, 我會一點 C 程式設計
這章包括了...
Basic C data types
C 語言很多 data type 都有 machinie level 的支援
了解機器對這些 data type 的支援, 是了解 C -> assembly 的重要關鍵
寫 C 時經常會宣告 local variable, 他們在機器底層的對應都是 register
就算放到 stack 去, 也是一個又一個 32-bit 的數值
所以除非是陣列, 不然直接宣告 unsigned int 即可
Function parameter 也是重要的點, function參數直接宣告成 u32/ s32
執行效能最好, 書上用 assembly 的觀點解釋這些事
C Looping Structure
迴圈怎麼寫效果最好, 執行速度最快, 這一段書上用組合語言有精闢的分析
現代 compiler 已經能做好很多事, 如果了解 compiler 最佳化的方式和限制
對程式功力會有大幅的幫助
Register Allocation / Function Calls
了解呼叫函數時 compiler 是怎麼配置暫存器, 對於寫好程式極重要
這個主題也是寫 C 程式的重要課題, 怎麼平衡函數的 overhead 和結構化設計
Pointer Aliasing
這章講解 compiler 沒辦法把 code 最佳化的原因, 值得細讀
Structure Arrangement
C 語言宣告的 structure, 怎麼對應到記憶體配置, 這是 C 的進階主題
這也是每個 C programmer 需要知道的事
Convert Division to Multiplication
Others...
Chapter 6
Writing and Optimizing ARM Assembly Code
如果有一天, 有人逼你用組語寫程式, 對某段程式做最佳化, 讀這一章就對了.
如果沒有, 這一章可以當作增廣見聞來讀
Pipeline 的處理器都各種 dependency 要 handle
寫組語的好處是, 程式設計師可以調整指令的順序, 避開這些限制
這一章讀起來的感覺很像 Computer Architecture/ Organization.
只是那兩本聖經本用 MIPS 舉例, 這章用 ARM 舉例
ARM 很有特色的 conditional execution 這一章也有說明
善用這些指令, 能很漂亮的避開 branch 指令
Chapter 7
Optimized Primitives
這一章其實可以跳過, 有需要再回來看
他講了包括平方根, 除法, log/sin/cos/exp, bit-reversal, 這些運算的作法
老實講, 沒有實際上用, 還真的很難讀下去 XD
Chapter 8
Digital Signal Processing
老實講, 用 ARM 來做 DSP, 那鐵定是找自己麻煩的 XD
有些 ARM 有 DSP extension, 其實讀讀這些章節, 也可以理解 DSP 需要哪些指令支援
這章教你怎麼實作 FIR/ IIR/ FFT, 有需要再回來看
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.88.68
討論串 (同標題文章)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章