c语言与汇编语言在用途上有什么各有什么优点?

如题所述

一般来说C语言等高级语言编译后都会转换成汇编代码,汇编代码可以直接转换成机器代码。也就是说汇编起着高级语言和底层二进制代码的桥梁作用。因为汇编是非常底层的语言,因此CPU执行的机器码几乎是根据你实际编写的汇编代码一条一条的执行的(这句话实际不是很准确,考虑到流水线,相关等情况,执行的情况会比较复杂,先简单这样表述),所以效率很高,代码段执行的时间可以精确计算。而C语言等高级语言要经过编译转换成汇编这一环节,而编译器一般比较“笨”,所以有时转换的汇编代码比程序员自己写的汇编代码长的多,执行效率就差了不少。如
汇编代码:NOP; c 语言代码 for(i=0;i<3;i++),汇编代码执行的时间是三个机器周期,而C语言代码
NOP; {;}
NOP;
一般大于三个机器周期。
由于汇编代码执行的效率高,执行的时间周期准确,因此在存储空间有限、定时要求准确的程序中广泛使用:如BIOS 起始代码等。C语言一般是用在应用程序的开发。
二者在移植性也存在差别,汇编代码跟具体的CPU架构相关,如arm的汇编代码就和x86不一样,因此汇编是不可移植的,c语言是可以移植的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-08-12
一般来说c语言等高级语言编译后都会转换成汇编代码,汇编代码可以直接转换成机器代码。也就是说汇编起着高级语言和底层二进制代码的桥梁作用。因为汇编是非常底层的语言,因此cpu执行的机器码几乎是根据你实际编写的汇编代码一条一条的执行的(这句话实际不是很准确,考虑到流水线,相关等情况,执行的情况会比较复杂,先简单这样表述),所以效率很高,代码段执行的时间可以精确计算。而c语言等高级语言要经过编译转换成汇编这一环节,而编译器一般比较“笨”,所以有时转换的汇编代码比程序员自己写的汇编代码长的多,执行效率就差了不少。如
汇编代码:nop;
c
语言代码
for(i=0;i<3;i++),汇编代码执行的时间是三个机器周期,而c语言代码nop;
{;}nop;一般大于三个机器周期。
由于汇编代码执行的效率高,执行的时间周期准确,因此在存储空间有限、定时要求准确的程序中广泛使用:如bios
起始代码等。c语言一般是用在应用程序的开发。
相似回答