Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

术语表

TL;DR

  • 本章不再引入新概念
  • 遇到忘记的名词,可以按从机器到语言的顺序回来查找

正文

  程序已经从一串比特,变成了人能轻松书写的语言。最后把一路用过的名字收进工具箱,方便以后回来翻找。

机器与汇编

术语一句话解释
机器码机器真正执行的二进制指令
助记符给操作码起的短名字,如 LOADADD
汇编语言用助记符和名字书写机器指令的语言
汇编器把汇编翻译成机器码的程序
标签给地址起的名字,常用于数据或跳转目标
符号表记录每个名字对应哪个地址的对照表
前向引用先使用、后定义的名字
两遍扫描第一遍登记符号与地址,第二遍翻译并回填
目标文件汇编后产出的文件,含机器码、符号表和待补齐的位置
重定位链接时给符号定下最终地址并补齐引用

高级语言

术语一句话解释
高级语言只描述问题、不安排机器细节的编程语言
变量给一块存储起的名字
类型规定一块存储占多大、怎样解释、能做哪些运算
表达式由变量、常量和运算符组成的算式
优先级决定表达式先算哪一部分的规则
运算树把表达式拆成树状的先后计算顺序
临时变量暂存表达式中间结果的变量
控制结构顺序、选择、循环三种安排步骤的方式
比较做一次减法、只记录标志而不保存结果
条件跳转根据状态标志决定是否改变 PC 的跳转

函数与运行栈

术语一句话解释
函数把一段工作命名打包、可按需调用的代码
参数调用函数时传入的输入
返回值函数交还给调用者的输出
函数调用传参、跳入函数、执行、再返回的过程
后进先出的一段存储
栈帧一次调用对应的参数、局部变量和返回地址
栈指针(SP)指向栈顶的寄存器
CALL / RET压入返回地址并跳入 / 弹出返回地址并返回
递归函数调用自身
栈溢出调用太深,超出栈空间

程序的内存

术语一句话解释
代码区存放指令、通常只读的内存区域
数据区存放全局变量和常量的内存区域
运行时按需申请和释放的内存区域
栈(内存区)存放函数调用、自动分配回收的内存区域
全局变量在函数之外定义、程序全程存活的数据
局部变量在函数内部定义、随调用产生和消失的数据
动态内存程序运行中主动申请、需自行释放的内存

翻译与运行

术语一句话解释
编译器把高级语言翻译成汇编或机器码的程序
链接器合并多个目标文件与库、完成重定位的程序
可执行文件链接完成后、可直接加载运行的文件
加载把可执行文件装进内存并开始执行
编译运行之前把整个程序翻译成机器码
解释由解释器边读程序边执行
字节码与具体机器无关的一种简化指令
虚拟机解释执行字节码的软件
即时编译(JIT)运行时把热点代码翻译成本地机器码
操作系统统一管理硬件资源、为程序提供服务的软件
裸机没有操作系统、程序直接运行的硬件

小结

知识点

  • 从汇编、高级语言、函数到程序构建的核心术语
  • 名词的顺序,也大致是程序从机器走向人的顺序

协议

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

封面图

设计师 | 南国微雪