作者svenlee (KOSS KSC35)
看板Soft_Job
标题Re: [请益] 韧体 8051 dsp arm
时间Sat May 17 20:34:39 2008
※ 引述《joy830 (joy)》之铭言:
: 关於 8051 dsp arm
: 麻烦指证我的观点哪错了 我想不通
: 1.都可以用组合语言写
没错,只要功力够。
: 2.都可以用c写
只要有toolchain,有gcc, glibc, binutils等工具能支援
能产出machine code,就可以写
: 3.组合语言执行速度比c快
不一定,组合语言有可能比C快是因为了解assembly的人可以针对某些情况最佳化,
不懂该processor最佳化的人去写assembly说不定更慢。
: 4.c写出来的行数会比组合语言少 所以在有限的ROM 用c写比较好
这观念很奇怪,C写出来的source code会比较小,
是因为C compiler会去帮你做语意分析与射出机器码,
存在ROM上的可不是source code,而是机器码。
组合语言也不是机器码,
那是一种低阶的"programming language",不是"machine code",
machine code是010101的符码,代表instruction, data memory address..etc,
根据该instruction格式而定。
实务上code size的大小跟使用哪种语言实作无必然相关,
但不管用哪种方式实作都有方法去降低code size。
基本上用assembly最能够直接决定code size,
因为assembly 的coding 格式最接近machine code。
用好的C compiler开启相关optimize功能,也有可能把code size降低,
甚至有可能比直接tune assembly更小,建议你可以用C写看看。
要直接tune assembly,通常是对该processor有很深的了解才敢去做的,
而且如果功力不够,有很高的机率会写的比compiler产出的还差,
不管是code size或效率。
: 那现在我的情况
: 公司有一个产品 不能用8051写 跑不动
: 目前用dsp写好了 用组合语言写 可是ROM满了 要加新功能加不进去
: 可是也不想用c写 怕跑太慢 (真的会慢吗?)
: 明天要去买dsp和arm的书来看了 好烦
: 看苗头不对 可能要闪了 = ="
8051, ARM与DSP是完全不同的三种processor,实务应用上有各自的市场区隔,
所以你应该评估你们的产品有什麽需求,
先去详细分析各自的优缺点去选择适合的processor,
然後下手实作,选择适合的toolchain,再慢慢去tune performance。
而不是有什麽在手边就拿什麽processor来实做,
而且你好像对於一个source code从compile到run 在processor的流程并不太清楚,
建议你可以去K计算机结构的书,
先把基本观念弄清楚,应该会比较好上手。
Requirement analysis, resources, design, implementation, test
需求分析、资源取得、设计、实作、测试
各个步骤都要紮实做到,才有可能在最短的时间内作出成果,
否则一定会浪费时间。
小弟才疏学浅,希望能帮上一点忙。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.59.31.160
1F:推 fish39:推一个~~不懂组语写的code会比c还慢 05/17 20:45
2F:推 sshjwu:推回文大哥是好人 我要拜师XD~~ 05/17 21:30
3F:推 joy830:我买书了 还没看 感谢回我那麽久的文章 05/18 00:22
4F:推 lingin1204:回文大大真是热心的高手~! 05/18 02:42
5F:推 rexrainbow:推一个~ 05/19 00:32
6F:推 nick888:说的好,推~~~~ 05/31 01:01
7F:推 dophin332:好文 不推吗? 10/06 21:48
8F:推 dophin332:好文推 03/15 13:08