汇编-00

为什么要学习汇编语言:

  • 透过高级语言看本质, 突破瓶颈
  • 疑难bug追踪
  • 逆向工程, 反汇编(Disassembly)

汇编语言(Assembly language):

  1. 汇编语言与机器语言一一对应, 每一条机器指令都有与之对应的汇编指令 (可逆的)
  2. 汇编语言可以通过编译得到机器语言, 机器语言可以通过反汇编得到汇编语言
  3. 通过汇编语言, 不能得出高级语言, 因为存在二义性

//1
int array[] = {10, 20};
//2
struct Person {
    int age;
    int num;
} per = {10, 20};

//1,2生成的汇编代码是一样的, 本质都是分配8个字节
mov  dword ptr [ebp-8],  0Ah
mov  dword ptr [ebp-4],  14h

汇编语言特点:

  • 可以直接访问、控制各种硬件设备,比如存储器、CPU等,能最大限度地发挥硬件的功能
  • 汇编指令是机器指令的助记符,同机器指令一一对应。每一种CPU都有自己的机器指令集\汇编指令集,所以汇编语言不具备可移植性
  • 知识点过多,开发者需要对CPU等硬件结构有所了解,不易于编写、调试、维护
  • 不区分大小写,比如mov和MOV是一样的

汇编语言种类:

8086汇编(8086处理器是16bit的CPU, 所以作为入门学习最好) Win32汇编 Win64汇编

AT&T汇编(Mac、iOS模拟器) ARM汇编(嵌入式、iOS设备) ......

前三种为intel汇编

results matching ""

    No results matching ""