返回:网络安全知识库 · 上一节:汇编环境 · 下一节:基础:进制

🎨 颜色标记说明

  • 粉色:特别重要、主线必掌握、优先复盘的内容。
  • 蓝色:核心概念、术语、分类名。
  • 橙色:需要关注的边界、易错点、注意事项。
  • 绿色:解释类内容、帮助理解知识点。

概念—机器语言 & 汇编语言

AMD、Intel 等不同 CPU 拥有不同的 指令集(Instruction Set),CPU 最终只能执行 机器语言

机器语言:CPU 唯一能够直接识别和执行的语言,由 二进制(0/1) 组成。

汇编语言:使用 助记符(ADD、SUB 等) 代替机器语言(二进制指令),提高程序可读性。

机器语言 ⇄ 汇编语言:一一对应(1 : 1),汇编语言需经过 汇编器(Assembler) 转换后才能被 CPU 执行。

执行流程:汇编语言(ADD) → 汇编器(Assembler) → 机器语言(011100…) → CPU


概念—汇编语言 & 高级语言

高级语言(如 C 语言)更接近人的思维,易于编写和维护。

编译器(Compiler) 负责将高级语言翻译成 汇编语言机器语言

一条高级语言通常会编译成多条汇编指令。

执行流程:高级语言 → 编译器(Compiler) → 汇编语言 → 汇编器(Assembler) → 机器语言 → CPU

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>

int main()
{
int a = 0;
int b = 1;
int c = a + b;

return 0;
}
1
2
3
4
5
004B1775    mov     dword ptr [ebp-8], 0
004B177C mov dword ptr [ebp-14h], 1
004B1783 mov eax, dword ptr [ebp-8]
004B1786 add eax, dword ptr [ebp-14h]
004B1789 mov dword ptr [ebp-20h], eax

对应关系:

1
2
3
4
5
6
int c = a + b;


mov eax, dword ptr [ebp-8]
add eax, dword ptr [ebp-14h]
mov dword ptr [ebp-20h], eax

一条高级语言 ≠ 一条汇编指令,而是通常对应多条汇编指令。