打印

C和ASM不是一个层次的东西(层次不等于贵贱)。

[复制链接]
2570|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jianke123007|  楼主 | 2011-11-30 16:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C和ASM不是一个层次的东西(层次不等于贵贱)。在高级语言(高低级之分也没贵贱什么事)范畴中,C是“细节”干预能力最强的语言。再加上C++面向对象描述的拓展,可以说C/C++是目前跨度最大,描述能力最强的语言。但由于C/C++毕竟是一高级语言(通常也有称其为中级语言的),原则上不可能达到指令级描述。虽然可以加入一些特许处理,但这不是C的准,对移植和更新不利。

相反,ASM本身是基于某一特定CPU的指令级(也称低级)语言,其描述和处理能力完全取决于具体CPU之指令系统的描述和处理能力。如同楼主所举的例子,如果存在一次移动八位的指令,则用一条指令就可以完成移位,反之则必须用多条指令来实现同样的移位。

虽然C/C++语言可读性和移植性优于ASM,但实际上,每个具体的C/C++的实现(或称编译)都是建立在某个具体的CPU之上的。换句话说,就是每个具体的C/C++都是存在于某个具体的ASM之上的。不仅是C/C++,可以说所有的高级语言的基础都是ASM——或称指令系统。回到楼主的例子,ss >> 8。虽然在几乎所有的C/C++中,都能用此语句表达右移八位的语义,但具体实现起来还得要看C/C++的基础ASM的处理能力。若上所叙,如果存在一次移动八位的指令,则用一条指令就可以完成移位,反之则必须用多条指令来实现同样的移位。

由于C/C++的编译设计者通常是C/++和相关CPU的指令系统的“双重专家”,所以一般由C/C++编译系统得到的代码就平均意义上讲比直接用ASM编出的代码质量要高,再加上C/C++的可读性和移植性,所以通常人们更愿意使用C或C++。但要注意的是,这里讲的是平均意义,不排除有特殊能人和特殊要求,致使ASM更适合其使用。

总之要认识到,C/C++和ASM不是一个层次的东西,它们没有可比性,所以也没有好坏贵贱之分。这就象分子是由原子组成的一样,化学家不会去鄙视物理学,而物理学家也同样不会去鄙视化学家。一个最为理想的情况就是,把自己培养成为既是物理家同样也是化学家。

相关帖子

沙发
hotpower| | 2011-11-30 17:09 | 只看该作者
高级语言会减缓脑残的发生。

使用特权

评论回复
板凳
liang7143| | 2011-11-30 18:33 | 只看该作者
;P高级语言能使你的开发 变得更加高效

使用特权

评论回复
地板
PaperKite| | 2011-11-30 19:24 | 只看该作者
还是建议大多数人至少通一门ASM,最终成为C人

使用特权

评论回复
5
NE5532| | 2011-11-30 20:08 | 只看该作者
我只鄙视因为怕硬件难研究,通过写应用层跑出来NB的人。

使用特权

评论回复
6
highgear| | 2011-11-30 22:02 | 只看该作者
C/C++和ASM 确实不是一个层次的东西,不排除有人能用asm做大型的软件。但是随着技术的发展,软件规模越来越大,asm 与 c/c++ 也就有了好坏贵贱之分。
精通 c++ 的程序员可以轻易写出良好的 asm 程序,规模越大,效果越明显;而只精通 asm 程序员很难写出良好的c/c++程序,规模越大,效果越明显。

使用特权

评论回复
7
chunyang| | 2011-11-30 22:07 | 只看该作者
又开始长篇大论这个经年的老话题了……

使用特权

评论回复
8
sysdriver| | 2011-11-30 22:51 | 只看该作者
C写1年,汇编写1年,现在是,2个同时写,支持C就写C,不支持就写汇编,有中断就用,没中断就看门狗定时器,有加法就用,没有就INC,有些东西不是你像怎样就怎样的。混合多了,渐渐发现,不管是C还是ASM,编程思路总是不变的。

使用特权

评论回复
9
原野之狼| | 2011-11-30 23:42 | 只看该作者
统统拿下最好 呵呵~

使用特权

评论回复
10
highgear| | 2011-11-30 23:57 | 只看该作者
呵呵,我写过超过30万行的一个汇编程序,所以我无比痛恨汇编。

使用特权

评论回复
11
rclong| | 2011-12-1 00:18 | 只看该作者
楼上你有没有用其他语言把程序重构过?

使用特权

评论回复
12
highgear| | 2011-12-1 00:31 | 只看该作者
之所以用汇编是因为小马要拉大车,现在用了高速 cpu (400M Blackfin), 当然要用c++ 做了,连 c 都跳过。如果我没有c++的经验,估计那个汇编程序会是一团乱麻。

使用特权

评论回复
13
Cortex-M0| | 2011-12-1 05:36 | 只看该作者
又开始长篇大论这个经年的老话题了……
chunyang 发表于 2011-11-30 22:07


没办法,二姨家现在缺乏灵感~~~

使用特权

评论回复
14
hotpower| | 2011-12-1 07:52 | 只看该作者
C++可以带来灵感和创造力。

使用特权

评论回复
15
alnjby| | 2011-12-1 08:41 | 只看该作者
高级语言能使你的开发 变得更加高效








南京耳鼻喉医院
耳鼻喉医院

使用特权

评论回复
16
and| | 2011-12-1 09:49 | 只看该作者
硬件也在向C靠拢,Cortex-Mx就是例证。

使用特权

评论回复
17
fail| | 2011-12-1 13:30 | 只看该作者
"这就象分子是由原子组成的一样,化学家不会去鄙视物理学,而物理学家也同样不会去鄙视化学家。一个最为理想的情况就是,把自己培养成为既是物理家同样也是化学家。"
这比喻真有趣,C是分子,ASM是原子

使用特权

评论回复
18
论坛游客| | 2011-12-1 16:45 | 只看该作者
嗯  接下来
还有裸奔与os
模拟与数字

使用特权

评论回复
19
NE5532| | 2011-12-1 17:01 | 只看该作者
嗯  接下来
还有裸奔与os
模拟与数字
论坛游客 发表于 2011-12-1 16:45


恩,因为这些人根本就没搞懂什么是技术,技术是拿来干神马的。

使用特权

评论回复
20
gxs64| | 2011-12-1 17:02 | 只看该作者
尺有所短,寸有所长。只不过随着技术的发展,减小了汇编的应用范围。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:想办法解决问题,而不是为问题烦恼!!!

0

主题

19

帖子

1

粉丝