导航:首页 > 源码编译 > 机器语言和编译是一样的吗

机器语言和编译是一样的吗

发布时间:2022-07-09 22:26:16

① 机器语言是汇编语言转过来的吗。就像高级语言通过编译器转到汇编语言,似得。请详解。

机器语言 可以是人工编制,最好人们就用机器语言编程的,十分十分的辛苦和容易出错。
机器语言当然不是汇编语言“转”过来的,汇编语言经过编译会最终生成机器语言。高级语言编译后也不是生成汇编语言,而是生成机器语言,CPU只认机器语言。

② 编译原理(编译器)是将高级语言翻译成机器语言的原理(或者工具)吗

不一定吧!编译器是将一种语言翻译为另一种语言的计算机程序。编译器将源程序(source language) 编写的程序作为输入,而产生用目标语言(target language )编写的等价程序。通常地,源程序为高级语言(high-level language ),如C或C + + ,而目标语言则是目标机器的目标代码 (object code,有时也称作机器代码(machine code )),也就是写在计算机机器指令中的用于运行的代码。这一过程可以表示为: 源程序→编译器 →目标程序

③ 解释语言和编译语言有什么不同

高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可
将它们分为两类:
1.解释类:执行方式类似于我们日常生活中的“同声翻译”,应用程序源代码一边由
相应语言的解释器“翻译”成目标代码(机器语言),一边执行,因此效率比较低,而且不
能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可
以动态地调整、修改应用程序,典型的解释型的高级语言有BASIC。
2.编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码
(机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。
但应用程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*.OBJ)才
能执行,只有目标文件而没有源代码,修改很不方便。现在大多数的编程语言都是编译型
的,例如Visual C++、Delphi等。
高级语言里一个程序的编译和执行大概是 下面的情况:
编译器将高级语言从源代码翻译成与之等价的目标程序(就相当于从中文翻译成中文),而后就隐退了。在随后的某个时刻,
用户启动目标程序由操作系统执行。实现高级语言的另外一种方式为解释:
与编译不同的是,解释器在目标程序(其实根本就没有目标程序,只是与编译来对比)执行期间,解释器一直随之运行
。这种执行过程完全由解释器控制的。从效果上看,解释器实现了一台“虚拟计算机”,其“机器语言”就是高级语言,解释器一次读入一条或多条语句
,按照其自身规定的方式去执行相应的操作。一般说来,解释比编译有着很好的灵活性;编译一般有着较好的性能。但是有些语言确是采用了两者的混合形式:
书中的原文:”如果初始阶段的翻译器比较简单,我们就说这个语言是“解释的”。如果翻译器很复杂,我们就说这一语言是“编译的”。现在两者的区分变得有些模糊了,因为“简单”和“复杂”都是修饰性术语,也因为完全可能出现用一个编译器(复杂的翻译过程)生成代码,而后又由一个复杂的虚拟机(解释器)执行。对于最后这种情况,如果翻译器对程序做了彻底的分析(而不是做某种“机械的”变换),而且有关的中间语言程序与源程序并没有很强的相似性,我们还是说这个语言是编译的。这两种特性----彻底的分析和非平凡的变换-----是刻画编译方式的标志性特征。“

④ 编译程序仅是指从高级语言到机器语言的翻译程序

答:
d.
高级语言翻译
a.
汇编程序翻译,是汇编程序
b.
高级语言解释执行,是解释程序
d.
机器语言的执行,是直接在硬件上执行。

⑤ 编译器为什么会生成汇编语言而不是机器语言

计算机只能识别二进制代码,所以机器指令是由二进制代码组成的,即你所说的机器语言。所谓汇编语言,只是一种符号,用来方便人们使用,否则你看到的都是一串串的01011011之类的信息,一眼就认出它是什么指令非常困难,而用汇编语言这种符号,一看就知道是什么指令了。这种符号语言用助记符来表示操作码,用符号或符号地址来表示操作数或数地址,它与机器指令是一一对应的。(楼上各位表述的所谓“步骤”论是不确切的)
所以,并不是你说的“生成汇编语言而不是机器语言”,生成的是机器语言,你在调试器或反汇编程序中看到的汇编语言代码只是由反汇编程序把机器指令翻译成你看得懂的符号--汇编语言--而已。(比如你在OD或IDA中可以看到每行汇编指令前面都有机器码,如push ebp的机器码是55h,单看55,你不是熟手的话可能还不知道它是什么指令,后面给你显示出符号"push ebp",你一下子就明白了,这就是一一对应的关系,连"55"都是为了让你看的方便,否则应是01010101,即8个电子元件的电源开、关状态)
同样的道理,你在十六进制编辑器(如winhex、HexWorkShop等软件)中看到的是十六进制每行16字节排列的,那也是经过把二进制代码每字节转换成十六进制显示给你看的。

关于平台问题,当然会有影响,不同的CPU有不同的指令系统,就连同一厂家的CPU指令系统都不同,比如Intel公司的CPU,从最早的到现在的,指令不断增多,什么MMX、SSE等等新指令集不断出现,更不要说不同厂家的CPU了。当然它们之间也有很多兼容的指令集。

⑥ 从汇编语言到机器语言的转变过程叫什么 是叫编译吗

对,没错。编译就是从高级语言到机器语言的过程。

⑦ 编译程序就是将高级语言翻译成机器语言

很显然不是的.编译程序实际上分为分析器,编译器,连接器等.分析器里面又分为词法分析和语法分析.词法分析就是将源程序里的关键字,变量等等的东西解析出来,通俗点说就是把一个英语句子中的单词分析出来.而语法解析则是从语法的角度来看看源程序是否存在语法错误.真正将高级语言变为一系列0和1的东西是连接器,将N多的obj文件编译为可以执行的exe.当然在这之前还要有编译程序来编译目标文件.现在的开发工具如VC,VB实际上是分析器+编译器+连接器+调试工具的集合.另外,如果你的程序要进行系统调用的话,比如socket程序的通讯.那么需要和操作系统的资源打交道.实际上所有的IO操作,内存读写等等都要进行系统调用.哪怕是一个简单的hello world!

阅读全文

与机器语言和编译是一样的吗相关的资料

热点内容
phpglob性能 浏览:196
程序员鸭子关系 浏览:721
预算法财政局 浏览:242
串口服务器连接云平台步骤 浏览:551
广东前端程序员私活怎么报价 浏览:458
易车app在线客服在哪里联系 浏览:817
磁盘管理类命令 浏览:141
喝酒是一种感情的解压 浏览:67
眼型如何判断APP 浏览:219
pdf改顺序 浏览:976
linuxmint的软件源 浏览:990
江苏的lol服务器地址 浏览:551
ghdownload是什么文件夹 浏览:155
sd卡解压板成品 浏览:526
365app哪个好 浏览:820
算法对于中学生的影响 浏览:789
linux如何看编译器c库 浏览:432
dnf为什么选择服务器没有了 浏览:868
马鞍山加密软件有哪些 浏览:175
linux命令用不了 浏览:111