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)进行解析


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


  • 相关阅读:
    机器学习——逻辑回归(Logistic Regression)
    [BUUCTF]PWN4——pwn1_sctf_2016
    [BUUCTF]PWN1——test_your_nc
    [BUUCTF]PWN2——rip
    vuex状态管理详细使用方法
    微信小程序入门
    条件渲染vue
    vue-cli安装方法
    JavaScript逻辑运算符
    JavaScript的基本介绍
  • 原文地址:https://www.cnblogs.com/fldev/p/14328012.html
Copyright © 2011-2022 走看看