‘壹’ 在计算机中,将汇编语言转换为机器语言的过程叫
在计算机中,将汇编语言转换为机器语言的过程叫汇编,或者汇编过程。
汇编语言称为符号化的机器语言,不能直接执行,需要将汇编语言转换为机器语言后才能执行,将汇编语言程序转换为机器语言程序的过程称为汇编过程。
汇编大多是指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。
‘贰’ 为什么编译器后端生成的是汇编而不是c语言
编译器后端生成的应该是机器语言,也就是二进制语言。
汇编语言和机器语言一一对应,所以有时调试显示的是汇编而已。
至于为什么是机器语言而不是C,是因为编译的目标是给机器运行用的,机器只能"看懂"机器语言。
‘叁’ 汇编语言或C语言 如何生成 机器代码
汇编语言或C语言经过编译器编译连接,就会生成HEX文件,将HEX文件转换成BIN文件,这个BIN文件就是纯粹的机器代码了。
‘肆’ 汇编语言 怎样 在计算机中 解释成 机器语言 以及它在计算机中如何一步一步运行
献丑了,学长,我是大一软件工程的新生,自学过几天汇编语言,我的看法是(不要笑我,看了你们的对话,感觉很深奥,有感而发):所有的指令(即“软件)”都在运行时被操作系统装入内存,指令也是“数据”,对cpu来说,传给他的只是一系列的1010这样的二进制数据,这一系列的二进制指令直接体现为高低电平。这一系列高低电平以一定的顺序输入cup的数据总线(输入端),然后控制cup内部的庞大电路进行改变,cpu也会根据相应的变化做出输入输出的“动作”。其实这些软件已经是二进制指令序列了,只要cpu去读他cpu就自己认得,知道该干什么,可见cpu有多复杂,难怪中国造不出好的来。编译这个过程是由编译器执行的,把汇编语言翻译成机器语言(二进制的指令序列)。至于世界上第一个编译器,我猜真是用机器语言写出来的。 要说这个翻译的过程的话···这个我还不懂,但我知道,这东西真不是三言两语就能说清楚的。 推荐你复习一下数字逻辑以获得对cup执行程序的底层感性理解。 然后再深入理解一下汇编语言和编译原理。也许那是你就理解的更深了···o(︶︿︶)o 虽然我也不太了解,或许那些你在就知道,我只是想说出我知道的一点点,希望能“帮到”你这个比我高出n级的学长。 其实翻译的过程是纯软件的叫编译器的家伙做的,cpu执行编译器,编译器(编译器本身就是一堆零和一的机器码)把那堆汇编代码当作一堆数据,以一定的算法把这批数据转换成由零和一组成的另一批数据,而这批由零和一组成的数据就是目标程序(转换成cpu可以认得的格式)。当CS和IP指向他(cpu开始读取并执行这些机器码),执行他的时候,这对看似混乱的数据就成了“软件”。把这堆被称为程序的零一序列写到硬盘里存起来后就成了我们熟知的可执行程序。不知道学长看完后有何感想,虽然好多想法尚且幼稚,不过没关系,纯粹为了交流思想。
‘伍’ 编译程序将高级语言程序翻译成与之等价的机器语言程序,该机器语言程序称之为_
目标程序。
编译过程的第一阶段主要任务是对源程序从前往后(从左往右)逐个字符扫描,从中识别出一个个单词符号,单词是程序设计语言的基本语法单位,如关键字、标识符等。
中间代码生成阶段的主要任务是工作是根据语义分析的输出生成中间代码。最常用的中间代码是与汇编语法的指令非常相似的三地址码,常采用四元式。
(5)编译器生成机器语言扩展阅读:
注意事项:
弄清楚整体流程,掌握全局才能形成清晰的思路,就如同写作文要先写提纲一样。
做接口时,要考虑使用者的感受是否易用,并且尽可能少的向使用者暴露内部的实现过程,简化使用过程。
正常分支总是少数,大部分情况下都是异常分支,可以用2-8定律来形容,因此对异常处理很重要。
发现问题不可怕,每一个问题都有其根本的原因,且一定要有追根究底的精神,如果最可能出问题的情况都已经排除,则应当换个角度从一些不起眼的地方重新查起。
‘陆’ 机器语言是汇编语言转过来的吗。就像高级语言通过编译器转到汇编语言,似得。请详解。
机器语言 可以是人工编制,最好人们就用机器语言编程的,十分十分的辛苦和容易出错。
机器语言当然不是汇编语言“转”过来的,汇编语言经过编译会最终生成机器语言。高级语言编译后也不是生成汇编语言,而是生成机器语言,CPU只认机器语言。
‘柒’ 编译器为什么会生成汇编语言而不是机器语言
计算机只能识别二进制代码,所以机器指令是由二进制代码组成的,即你所说的机器语言。所谓汇编语言,只是一种符号,用来方便人们使用,否则你看到的都是一串串的01011011之类的信息,一眼就认出它是什么指令非常困难,而用汇编语言这种符号,一看就知道是什么指令了。这种符号语言用助记符来表示操作码,用符号或符号地址来表示操作数或数地址,它与机器指令是一一对应的。(楼上各位表述的所谓“步骤”论是不确切的)
所以,并不是你说的“生成汇编语言而不是机器语言”,生成的是机器语言,你在调试器或反汇编程序中看到的汇编语言代码只是由反汇编程序把机器指令翻译成你看得懂的符号--汇编语言--而已。(比如你在OD或IDA中可以看到每行汇编指令前面都有机器码,如push ebp的机器码是55h,单看55,你不是熟手的话可能还不知道它是什么指令,后面给你显示出符号"push ebp",你一下子就明白了,这就是一一对应的关系,连"55"都是为了让你看的方便,否则应是01010101,即8个电子元件的电源开、关状态)
同样的道理,你在十六进制编辑器(如winhex、HexWorkShop等软件)中看到的是十六进制每行16字节排列的,那也是经过把二进制代码每字节转换成十六进制显示给你看的。
关于平台问题,当然会有影响,不同的CPU有不同的指令系统,就连同一厂家的CPU指令系统都不同,比如Intel公司的CPU,从最早的到现在的,指令不断增多,什么MMX、SSE等等新指令集不断出现,更不要说不同厂家的CPU了。当然它们之间也有很多兼容的指令集。
‘捌’ 高级语言写好之后需要编译器编译成机器语言 那是不是C语言 java python等都要编译 这些编译器谁开发的
C语言最早的编译器是用汇编开发的,后来的就可以用C开发了
Java和Python属于解释性的语言,
Python的解释器是用C语言开发的。
每种语言有自己擅长的地方,也有自己的缺点。
‘玖’ 编译程序可以将高级语言变成机器语言吗
将高级语言转换成由0,1构成的机器语言需要通过编译程序来实现。即可转化成机器语言。
机器语言是一种指令集的体系。这种指令集,称机器码,是电脑的CPU可直接解读的数据。
机器码有时也被称为原生码,这个名词比较强调某种编程语言或库,它与运行平台相关的部份。