程序编译
https://www.bilibili.com/video/BV1UV411B7qU?p=7 笔记
程序的本质
- 编译器 将 程序代码 转化成 CPU 指令/机器码;
- 指令装载到内存中;
- CPU 读取/写入 内存;
- CPU 控制计算机的硬件
CPU 中比较重要的组成
- 寄存器,信息存储
- 运算器,信息处理
- 控制器,控制其他器件进行工作
内存 & 寄存器
内存和寄存器都可以用来存放东西,但是寄存器就在 CPU 里面,CPU 访问它更快。
内存和寄存器调用示例:
数据的计算
int a = 1;
int b = a + 1
a, b 都存在内存中,数据会送到寄存器进行计算(+1),然后返回内存。
程序语言的发展
- 机器语言
- 汇编语言
- 高级语言
- 汇编语言 和 机器语言 是一一对应的,每一条 机器指令 都有与之对应的 汇编指令;
- 汇编 通过
编译
得到 机器语言,机器语言通过反汇编
得到汇编语言; - 高级语言可以通过编译得到汇编语言\机器语言,但汇编语言\机器语言几乎不可能还原成高级;
- 高级语言不能直接访问寄存器;
编程语言的本质区别
JS/PHP 代码最终会转化为机器码,但看不到这个机器码;引擎屏蔽了这些细节。
Java 会转化为字节码,由 JVM 装载
-
编译型语言
- C / C++ / OC / Swift
- 容易被反汇编 -
编译型语言(依赖虚拟机)
- Java / Ruby
- Java 由 JVM 进行装载字节码
- 虚拟机可以看做是小型操作系统 -
脚本语言
- Python / JS / PHP
- PHP 由ZE(Zend Engine)进行解析
编译语言要求全部都对才能执行;
脚本语言是一行一行去扫描执行,某一行出错,前面会继续执行,后面不会。效率比编译语言低,因为是运行时来处理。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!