zoukankan      html  css  js  c++  java
  • 程序编译


    https://www.bilibili.com/video/BV1UV411B7qU?p=7 笔记


    程序的本质

    • 编译器 将 程序代码 转化成 CPU 指令/机器码;
    • 指令装载到内存中;
    • CPU 读取/写入 内存;
    • CPU 控制计算机的硬件

    CPU 中比较重要的组成

    • 寄存器,信息存储
    • 运算器,信息处理
    • 控制器,控制其他器件进行工作

    内存 & 寄存器

    内存和寄存器都可以用来存放东西,但是寄存器就在 CPU 里面,CPU 访问它更快。

    内存和寄存器调用示例:
    数据的计算

    int a = 1;
    int b = a + 1
    

    a, b 都存在内存中,数据会送到寄存器进行计算(+1),然后返回内存。


    程序语言的发展

    1. 机器语言
    2. 汇编语言
    3. 高级语言
    • 汇编语言 和 机器语言 是一一对应的,每一条 机器指令 都有与之对应的 汇编指令;
    • 汇编 通过 编译 得到 机器语言,机器语言通过 反汇编 得到汇编语言;
    • 高级语言可以通过编译得到汇编语言机器语言,但汇编语言机器语言几乎不可能还原成高级;
    • 高级语言不能直接访问寄存器;

    编程语言的本质区别

    JS/PHP 代码最终会转化为机器码,但看不到这个机器码;引擎屏蔽了这些细节。
    Java 会转化为字节码,由 JVM 装载

    • 编译型语言
      - C / C++ / OC / Swift
      - 容易被反汇编

    • 编译型语言(依赖虚拟机)
      - Java / Ruby
      - Java 由 JVM 进行装载字节码
      - 虚拟机可以看做是小型操作系统

    • 脚本语言
      - Python / JS / PHP
      - PHP 由ZE(Zend Engine)进行解析


    编译语言要求全部都对才能执行;
    脚本语言是一行一行去扫描执行,某一行出错,前面会继续执行,后面不会。效率比编译语言低,因为是运行时来处理。


  • 相关阅读:
    c++静态变量和静态函数
    c++抽象类和纯虚函数
    二维矩阵的算法
    JS操作CSS样式
    DOM
    JavaScript学习
    CSS样式表介绍
    HTML 学习整理
    ADO.Net知识总结
    数据库表查询高级 触发器游标等
  • 原文地址:https://www.cnblogs.com/fldev/p/14328012.html
Copyright © 2011-2022 走看看