大家好,今天小编关注到一个比较有意思的话题,就是关于编程语言运行机制有哪些的问题,于是小编就整理了2个相关介绍编程语言运行机制有哪些的解答,让我们一起看看吧。
代码是如何变成运行的程序的?
你这么理解吧,讲通俗点,最早的电脑是没有图形的,也是单纯拿来计算的。你要用汇编语言去告诉cpu你想做什么,后来世界首富老比做了windows系统,有图形了,你只需要点点鼠标就行了,所以他就成首富了。操作系统封装好各种功能,让你的图形操作通过内存自动转成cpu能读懂的汇编语言和01两个数字,cpu反馈给你的就是屏幕显示的一切和结果。
在此基础上,也是在操作系统的基础上就有了很多各种开发语言,他们的出现都是为了简化开发难度,也是像操作系统一样封装好了各种功能,让你只需要写几句简单的代码就能去实现功能。
你打开一个游戏,游戏的代码就会告诉cpu会从硬盘的哪里调取游戏的资源显示,人物的各种数值保存在内存的哪个位置,你选择了怪物,最终还是通过内存告诉cpu,我选择了位于内存地址的哪个数值,显示给你的就是你选择了他而不是你选择了他。
这样说不专业,但你能更好的理解运行机制和原理,为什么计算机高手都是玩内存和汇编的,那是最底层的,说一堆专业术语你也不能能马上理解。
谢谢邀请
由计算机语言的程序文本转变为可执行的计算机程序通常有两种途径,一个是通过语言解释器,一个是通过语言编译器。
语言解释器是类似操作系统的语言环境,在这个环境中,计算机语言程序文本是作为命令集被逐条解释并执行。早期DOS,CP/M中自带的BASIC解释器,DBASE数据库和著名的甲骨文等都属于这一类。
语言编译器是通过将程序文本转换成机器语言文件后将汇编语言与预先编制好的函数库程序进行链接从而构成可以在操作系统中直接运行的程序文件。C,pascal,FORTRAN等语言都被提供有各种编译器(borland公司的,微软公司的等等),另外,BASIC语言和汇编语言也有编译器。
还有一种方式是介于二者之间的,先通过编译器将程序文本转换为未经链接或只进行部分链接的中间代码文件作为可执行程序,然后再在指定环境中运行。如多数BASIC编译器生成的程序必须在装有专用RTL的环境中执行,其执行过程变为链接+执行。现在WINDOWS下的多数编译系统采取了这种形式。
C语言是根据什么原理和机制生产汇编的?
C语言是一种高级编程语言,它的代码需要通过编译器将其转化为汇编语言,再由汇编器将其转化为机器码,最终在计算机上运行。C语言中的每个语句都会被编译器翻译成一条或多条汇编指令。
在C语言中,每个变量都有一个内存地址,在程序中使用变量时,实际上是在操作这个内存地址。C语言的变量类型和内存分配方式都可以直接映射到底层的硬件结构上。
C语言与汇编之间的关系是通过编译器实现的。编译器将C代码转换为汇编代码时,会根据C语言的规则和约定来生成对应的汇编指令。而汇编指令则是直接操作计算机硬件的指令,它们可以被CPU直接执行。
总之,C语言通过编译器将高级代码转换成底层机器码执行,而这个过程中涉及到了许多底层原理和机制。
用C/C++语言这类高级编程语言所编写的程序源码是利用一种叫做“编译原理”的技术,经过一些列的处理步骤,最终转变为汇编指令,再最后翻译机器指令。我们知道计算机只能处理和识别二进制指令,而我们所编写的程序包含各种较复杂的结构,例如 if语句、循环语句、继承、多态、虚函数等。其实,在很早的时候,计算机科学家们就已经在研究如何把接近人类语言的高级语言所编写的程序转换成机器指令了。这些研究成果都归属于“编译原理”领域,并且“编译原理”是计算机专业学生的必修课。
那么根据编译原理,C语言是怎么转换成汇编语言,总共分以下几个步骤:
1. 预处理 -> 2.词法分析 -> 3.语法分析 -> 4.语义分析 -> 5.优化 -> 6.链接
注意,我上面列出的过程是目前实际中真正采用的步骤,编译原理课程中可能没有把完整步骤列出来,只列举了核心的几个步骤。
上面每个步骤在编译原理课程中都有一个专门的章节来讲述。这里大概说一下每个步骤的作用吧。
1. 预处理:负责执行C语言中的#include, #if, #else 等预处理指令。注意,这里是去执行这些预处理指令。这些预处理指令的作用是根据你的系统环境配凑出最终版的源代码。
2. 词法分析:把你定义的函数名、变量名、预留的关键字等抽象化,用一个符号来代替,方便编译程序处理。例如上图中的main, return, printf等单词,都被看作一个符号,转换成M, R, P。在这个过程中,会检查你的变量名、函数名名称是否正确。
3. 语法分析:经过词法分析处理之后,程序代码已经变成一堆符号了,例如 I S T F ... M I R P(放心,人已经不认识了,但是计算机能认识)。这时的符号是打散的,语法分析负责把这些符号按照一定的结构组织起来,形成一个抽象语法树(这个结构跟你写的程序代码的结构是对应起来的)。
到此,以上就是小编对于编程语言运行机制有哪些的问题就介绍到这了,希望介绍关于编程语言运行机制有哪些的2点解答对大家有用。