@
sunshower 想不到竟然编程语言和机器语言也有区别~我查查去~
转转转---------------------我是分割线---------------------------------我是分割线---------------------------------------
我自己的看法,希望阅读完。
机器语言是硬件工作的物理语言,只有0和1,不是给人看的,比如cpu的内部工作指令。
汇编语言是给开发人员看的,但不同与其他高级语言(c,basic,c++)
汇编语言不像高级语言有跨平台性,首先,CPU的的工作是靠机器语言的(就是指令集,ISA),而这些指令有些是cpu独占的,而有些是必须要被外界访问的,比如让cpu做加法运算,谁加谁是cpu无法决定的,就必须通过外界指定才可以运算。于是问题出现了,用机器码控制cpu太难了,只有0和1,编程人员要费很大劲!于是汇编语言应邀而生。它是文字形式的,程序员写完程序后通过汇编器(类似于高级语言的编译器)将文字转化为机器码,于是程序就可以控制cpu了,因此汇编语言很依赖cpu,i386的汇编程序只能运行在支持i386体系的cpu上,苹果PowerPC汇编程序只能运行在苹果机上。这也就是为什么Windows程序不能运行在苹果机上,就是一位互相的汇编指令集不同,从而机器码不同。
当然计算机程序的运行最终还是以机器码运行的,但编程语言是无比重要的,比如用c语言写一个最简单的程序,首先c语言编译器(compiler)将程序转化为对应的汇编,汇编器(assembler)将汇编代码转换为机器码才可运行。
之所以高级语言可以跨平台,就是因为同一种高级语言在不同平台的不同编译器,可以调用相对平台的汇编器来在对应平台运行。因此,有人把高级语言和汇编语言分为一类,是不对的。。。。。。
还想说很多,毕竟刚学了,也顺便复习一下,还是到此为止吧。