Re: [心得] ARM System Developer's Guide

看板ASM (組合語言)作者 (當憲兵是我一輩子的恥辱)時間15年前 (2010/01/02 17:44), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
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
文章代碼(AID): #1BFnMGpJ (ASM)
文章代碼(AID): #1BFnMGpJ (ASM)