C学习笔记(⼀)C语⾔和汇编语⾔的区别
C学习笔记(五) C语⾔和汇编语⾔的区别
C语⾔和汇编语⾔的区别:
汇编:效率⾼,对硬件的可操控性更强,体积⼩,不易维护,可移植性很差
C:效率⽐较低,硬件可操控性⽐较差,⽬标代码体积⼤,容易维护,可移植性很好
汇编语⾔运⾏效率⾼的原因:(转载)
1. 汇编语⾔实质上是机器语⾔的助记符。 CPU只能运⾏它所⽀持的指令集,⽽这些指令集当中的每条指令都是⼀些⼆进制数的序列,也就是“0”和“1”的有序组合;“0”和“1”的组合不便于程序员的记忆因此有了“MOV A 0x40”等这样的助记符。所以汇编语⾔编译成CPU可执⾏的机器语⾔其实只要做⼀个翻译的动作就好了。⽽C语⾔编写完程序后,需要通过编译器将C语⾔编译成与相应CPU指令集对应的机器语⾔。汇编语⾔与机器语⾔是⼀⼀对应的。但是C语⾔呢?当然没这么好事了。C语⾔的语法是固定的,C语⾔编写的程序要编译成CPU能读懂的机器语⾔指令没办法⼀⼀对应,因此需要有编译规则了,所以运⾏效率低⼀些。也可以说,C语⾔,是⾯向程序员的语⾔,⽽汇编语⾔是直接⾯向CPU的语⾔。
2. 汇编是直接⾯对CPU的语⾔,只要是在指令集⽀持的范围内,汇编语⾔可以直接⽽灵活地管理包括特殊功能寄存器、通⽤寄存器、存储单元的每⼀个字节,甚⾄是每⼀个bit。C语⾔对内存的使⽤及管理功能也是很强⼤的,但毕竟还是受制于语法。举个最简单的例⼦,C语⾔当中没有对应三字节或是五字节的变量类型,要么int型,要么long型,所以每次申请必须是固定的字节数,势必造成内存使⽤上的浪费。⽽⼤部份汇编语⾔根本没有这样的语法,在伪指令的帮助下(其实也只是提⾼可读性),汇编语⾔程序可以使⽤任意字节数的变量,当然处理起来⽐C语⾔⿇烦得多,最终还是⼀个字节⼀个字节地拼接处理,⽽⽤C语⾔写程序就轻松了,不⽤管这些,最终编译器会搞定嘛。⽽轻松的代价就是造成了浪费。⽽内存使⽤效率不⾼同时也会影响到整个程序的整体效率。
C语⾔与汇编的不同适⽤场合
1:若只有较简单的逻辑操作、逻辑、简单运算,使⽤汇编会得到较为精准的代码,但⽤c也同样可以做到。
2:若掺有复杂运算、浮点运算、⾮线性⽅程等,汇编难度很⼤,⽽C语⾔作为⼀种⾼级语⾔,有简洁紧凑,使⽤灵活的语法机制,编写复杂程序容易得多。
3:每⼀款处理器各⾃的汇编语法⼤都不⼀样,若仅使⽤汇编,可扩充性、可移植性都很差,⽤c就会好的多。
c语言和c++区别4:对硬件进⾏初始化的操作,使⽤汇编语⾔。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论