代码改变世界

iOS汇编系列-汇编入门

2018-05-05 14:09  iCoderHong  阅读(847)  评论(0编辑  收藏  举报

概述

汇编语言(Assembly Language)用符号代替了0和1,比机器语言更便于阅读和记忆。

但是同样汇编语言同样指令太多不便于记忆,就出现了高级语言。C\C++\Java\Swift等,更接近人类的自然语言。

编程语言的发展史

机器语言是可以直接运行在计算识别运行的,汇编需要经过编译生成计算机语言。高级语言是通过编译中间产物是汇编,不是一部到机器语言。

汇编语言与机器语言是一一对应的,每一条机器语言指令都有与之对应的汇编指令。汇编语言可以通过编译得到机器语言,机器语言可以通过反编译得到汇编语言。

汇编语言特点

  • 可以直接可以直接访问、控制各种硬件设备,比如存储器,CPU等,能最大限度的发挥硬件功能。
  • 汇编指令是机器指令的助记符,同机器指令一一对应。每一种CPU都有自己的机器指令集\汇编指令。所以汇编指令不具备可移植性。
  • 不区分大小写。比如mov与MOV是一样的。

汇编语言的用途

  • 编写驱动程序、操作系统(比如Linux内核的某些关键部分)
  • 对性能要求极高的程序或者代码片段,可与高级语言混合使用(内联编译)
  • 软件安全
    • 病毒分析与防治
    • 逆向\加壳\脱壳\破解外挂\免杀\加密\解密\漏洞\黑客
  • 是理解整个计算机系统的最佳七点和最有效途径
  • 更好了解代码的本质

汇编语言分类

  • 8086汇编(8086处理器是16bit的CPU)
  • Win32汇编
  • Win64汇编
  • AT&T汇编(Mac、iOS模拟器)
  • ARM汇编(嵌入式、iOS设备)