低级编程语言和高级编程语言之间有多大的联系?例如,汇编语言和C++在不同的层次上工作,但是,在这些级别之间存在什么样的逻辑呢?让我们假设我写了一个你好世界!用C++编程,我编译并运行它。为了使我的代码在汇编程序级别上更有效,我需要关心什么??
发布于 2015-10-08 02:47:18
去五金店,你可以找到横梁、木板、钉子、螺丝、砖头、灰泥和各种基本建筑材料。这些材料的组合可以建造狗屋、人民住宅、办公大楼、人行道、道路、邮箱等。
C/C++是房子,邮箱,储藏室。砖块、木板和钉子是机器语言。砖头和钉子这个词是一种汇编语言,用来描述材料的单个实例,并与之有一对一的关系。
当您使用一行高级代码时
a = b + c;您不能以这种形式运行它,甚至不能真正解释它,因为解释器本身是一个由较小的部分组成的程序。一个编译器,不管是手工做的,还是从其他程序进化而来的程序,都被用来解释这一行高级代码,为每个变量分配寄存器或内存,并从指令集中的可用指令和指令的顺序中选择,创建一个处理器可以理解的程序,执行相同的功能任务。把这个问题交给100个人,你就可以得到从1到100个不同的解决方案,在处理器理解的指令集中,总有不止一种方法可以使功能等效于一个高级程序。
理想情况下,汇编语言只是处理器指令集的一种可读的、可写的形式,因此我们不必盯着机器代码的比特和字节。汇编程序是一个简单得多的程序,它将汇编语言助记符转换成机器代码,理想情况下是将一条asm指令转换成一条机器指令,但是汇编程序可以添加其他特性来使手工编程(甚至编译器生成asm)的任务更容易在人身上完成。
这些级别之间的“逻辑”是其他名为编译器、汇编程序和链接器的程序,它们将高级程序“转换”为低级的功能等效程序。处理器实际上只能执行低级别的操作。对于处理器来说,高级别的源代码仅仅是一小块数据,与书籍、网页、音频文件、视频等没有什么不同,如果没有能够解析这些数据的本地语言程序,就无法理解它。
https://stackoverflow.com/questions/33003700
复制相似问题