美文网首页
程序是如何运行的

程序是如何运行的

作者: Super曲江龙Kimi | 来源:发表于2020-02-11 18:28 被阅读0次

    程序编译和程序解释

    计算机是理解不了人类的语言、同样也理解不了高级编程语言的,CPU能直接解析并运行的不是源代码而是本地机器代码


    image.png

    本地代码:


    image.png

    所以要保证高级编程语言能够正常运行,则需要进行程序的编译或者解释。

    编译: 在运行之前将源代码转换成机器代码:C 、 C++。完成此过程的叫做编译器
    解释: 在运行时进行源代码转换成机器代码: JS、PHP

    JAVA既有编译过程也有解释过程
    先编译成JVM字节码在JVM虚拟机下解释成机器代码

    这样的好处就是一套源代码可以在不同CPU、不同操作系统下都编译成可以执行的机器代码。


    image.png

    链接

    程序编译后并不一定可以直接使用,需要经过链接。因为编译后程序中使用的一些公共函数都在库文件(.lib文件其中存放着真正的函数文件DLL的路径)中,需要链接进来,将多个文件整合成一个exe文件的过程就是链接。


    image.png

    程序加载至内存

    经过链接后生成的exe文件中的代码被加载到内存中执行,在内存中会开辟存储空间。包含运行时生成的栈和堆。函数中的临时变量在栈中,全局变量等都在堆中。


    image.png

    栈中的数据在函数执行完后会自动释放,而堆中的数据需要程序编写释放。否则会发送内存泄漏


    image.png

    汇编语言

    汇编语言是更接近底层的语言,和本地机器语言是一一对应的。通过用助记符来表示一些操作。用汇编语言写的源代码也需要转换成机器代码执行,这一过程叫做汇编,而将机器语言转换回汇编语言叫做反汇编

    image.png

    C语言等高级语言可以通过编译器直接转换成机器语言,也可以通过特殊的编译器先转换成汇编语言。

    相关文章

      网友评论

          本文标题:程序是如何运行的

          本文链接:https://www.haomeiwen.com/subject/nyoxfhtx.html