作者lihgong (当宪兵是我一辈子的耻辱)
看板ASM
标题Re: [心得] ARM System Developer's Guide
时间Sat Jan 2 17:44:46 2010
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