对汇编的基本认知

汇编语言的发展

机器语言

由0和1组成的机器指令(本质上就是有电和没电)

在早期变成过程中,由于使用机器码这种方式很难受,慢慢的衍生除了助记符,如:

  • 加:0100 0000
  • 减:0100 1000
  • 乘:1111 0111 1110 0000
  • 除:1111 0111 1111 0000

汇编语言(assembly language)

助记符这种方式很大程度的方便了编写代码,逐渐就形成了汇编语言,换句话说,汇编语言可以是助记符的集合(纯个人胡说。。。),汇编语言的特点是用符号代替了机器代码指令,而且与机器代码有一一对应的关系:

  • 加:INC EAX 通过编译器0100 0000
  • 减:DEC EAX 通过编译器 0100 1000
  • 乘: MUL EAX 通过编译器 1111 0111 1110 0000
  • 除:DIV EAX 通过编译器 1111 0111 1111 0000

高级语言(High-level programming language)

比如C、C++、Objective-C、swift,更符合,更能让人理解的语言,对于iOS来讲,Objective-C向swift转变是一个必然的过程,在接触swift的过程中,我发现swift与Android的Kotlin,Python,Java等等这些语言有了一些共通的地方,使得不同专业的同学对于跨专业操作编的更加的容易,我有一个疑问,在不久的未来,AI可以商用,甚至民用、通用,语言会不会大一统呢(这里也是个人胡说。。。) 回到高级语言,特点是通用性强,缺点也很明显,体积更大。

代码在终端上的编译过程:

  • 汇编语言机器语言是一一对应的关系,每一条机器指令都有与之对应的汇编指令
  • 汇编语言机器语言是可以互相转化的,反汇编:可行的,拿到二进制可以反汇编成汇编语言
  • 高级语言 可以通过编译得到汇编语言\机器语言 ,但是机器语言/汇编语言几乎不可能还原成高级语言
  • 不同的高级语言(Objective-C/Swift)可能对应的汇编是一样的。
  • 同样的语言,不同的代码,可能对应的汇编语言也可能是一样的。
  • 高级语言与汇编语言的对应关系:(一对多)

汇编语言的特点

  • 可以直接访问,控制各种硬件设备,比如存储器、CPU等,可以最大程度上发挥硬件的功能
  • 可以不受编译器的限制,对生成的二进制代码进行完全的控制
  • 目标代码简短,占用内存较少,执行速度快
  • 汇编指令是指机器指令的助记符,同机器指令一一对应 ,每一种CPU都有自己的机器指令集\汇编指令集,所以汇编语言不具备可移植性。
  • 知识点很多,开发者需要对CPU硬件有一定的了解,不易于编写、调试、维护
  • 不区分大小写,MOV与mov是一样的

汇编语言的用途:(见仁见智)

  • 编写驱动程序,操作系统(Linux内核的某些关键部分)
  • 对性能要求极高的程序或者代码片段,可与高级语言混合使用(内敛汇编)
  • 软件安全 1、病毒分析与防治 2、逆向、加壳、脱壳、破解、外挂、免杀、加密解密、漏洞
  • 理解整个计算机系统最佳起点与最有效的途径
  • 为编写高质量的代码打下基础
  • 代码的本质 1、函数的本质 2、 ++a底层是如何执行的 3、编译器到底帮助我们干了什么 4、DEBUG和RELEASE模式有什么关键的地方被我们忽略

借用大佬的话:

越底层越单纯、汇编是程序员需要用心理解的一门语言

相关推荐
2401_8582861116 小时前
汇编实现从1加到1000(《X86汇编语言 从实模式到保护模式(第2版》) 第135页第2题解答)
汇编·nasm·汇编语言·x86·virtualbox·8086·virtual box
Terasic友晶科技6 天前
第47篇 汇编语言实现中断<三>
汇编语言·中断
黄卷青灯7711 天前
汇编语言知识基础介绍
开发语言·汇编语言
codists1 个月前
《Programming from the Ground Up》阅读笔记:p103-p116
编程人·汇编语言
Kryo3 个月前
人人都能成为汇编高手 —— Android ARM64调试 从入门到入土
android·汇编语言
喜豆老爹3 个月前
CPU内部结构窥探·「2」
arm·汇编语言
qq_459730035 个月前
汇编语言(详解)
汇编语言
kaixin_啊啊5 个月前
汇编语言知识点整理(应付考试专用,想学习找其他的)
学习·汇编语言
阿姆姆姆姆姆姆姆5 个月前
计算机基础系列 —— 汇编器
操作系统·cpu·汇编语言
大熊猫侯佩6 个月前
Swift 从获取所有 NSObject 对象聊起:ObjC、汇编语言以及底层方法调用链(一)
swift·汇编语言·hook·钩子·nsobject·objc·方法调用链