ITEEDU

C VS ASM

站长原创,版权所有ITEEDU,2009-9-30

汇编其实没有人们想像中的那么难,其编程难度并不比C难多少。但是为什么人们都用C而不用汇编呢?下面说一说我的个人观点,人仅供参考。

第一,C实现过程化。也就是说有了if、while这样的控制结构。在没有过程化之前,语言的跳转都是用goto的,这很容易出错,因此goto也是臭名昭著的很。

而汇编中有些版本用伪指令的方式增加了结构化控制结构,如masm中。但在真正应用的很多版本中还是没有的。

第二,C可以跨平台。看到这你一定会说,C跨平台,我怎么没听过。只听过JAVA跨平台呀。其实这里的跨平台是指编写的代码是跨平台的。也就是说一个C程序,到另一个有C编译器的机器上,把代码再编译一次,就可以用。这在汇编中是很难做到的,因为不同的机器中的汇编指令就是不同的,程序的移植还要改低层的代码,这是很恐怖的一件事呀。

第三,C的指针操作比汇编的地址操作更安全。本来地址操作在汇编中就是一块难啃的骨头,指针从这点上解决了地址操作问题,而又不失汇编中地址操作的灵活性,只能说是很好很强大了。

但我们都知道C中的指针也是很难学的,我想这归因于人们对汇编中的地址操作没有概念吧。要不怎么会觉得C中的指针不好用呢。

第四,C有很好的内存管理。用过汇编的人都知道,当分配内存时是多烦琐的一件事。用时的地址操作也是很让人头疼的,一不注意地址就加错了。和指针一样,个人感觉C中的内内存分配在灵活性上并不比asm中的差,安全性更高,管理更方便了。

第五,C中可以嵌入汇编代码。都到这个程度了,汇编一般只是在C中做特定部分的优化用了。但有些是C不可代替的,如有些不能用C开发的驱动,高速的操作系统核心有的也用汇编重写等等。

总结,C的指针和内存分配使C更容易实现复杂的程序结构,不只是与汇编比,与很多语言比都如此。其它方面是没太大区别的,用伪指令做汇编编程时,只是觉得用的资源不同。C是在调用库函数,汇编在调用中断和管理CPU和内存。

仅此而已。仅个人观点。