美文网首页
iOS汇编研究-1-初识汇编

iOS汇编研究-1-初识汇编

作者: 行知路 | 来源:发表于2021-05-16 16:23 被阅读0次

一、什么是汇编语言

        人类操作计算的能力需要使用一种方式来表达、需要使用一种方式来实现。目前,都是通过编程来实现的,简单来说,就是告知计算机要遇到什么情况怎么处理。既然是告知,那么就需要使用语言。计算能够直接听懂的语言就是机器语言,什么是机器语言?其实就是一大堆的01序列。例如,01010101011000。那么这句话表达的是什么意思呢?人类是不是很难看懂!
        所以人类就对机器语言进行了一些简化。例如,机器语言01000000,就使用add来代替;例如,机器语言01000000,就使用sub来代替。这种把机器能沟听懂的只包含01序列的语言,使用助记符来优化的语言就是汇编语言。
        虽然汇编语言相对于机器语言来说更加易懂,但是对人类依然不是很友好。所以,人类就对汇编语言进行优化,进而发展出高级语言,像C、C++、Java、OC、Swift等。


计算机语言

二、汇编语言的特点

        与高级语言相比,汇编语言具有以下特点:

  • 高级语言操作的是内存
  • 汇编语言可以操作内存和寄存器
  • 汇编语言不可移植(其与具体的芯片相关,所以不可移植)

三、iOS设备与汇编语言的版本

编号 汇编语言的版本 适用设备
1 armv6 iPhone、iPhone2、iPhone3G,第一代iPod Touch、第二代iPod Touch
2 armv7 iPhone3GS、iPhone4、iPhone4S,iPad、iPad2,iPad3、iPad mini,iPod Touch 3G、iPod Touch 4
3 armv8 iPhone5、iPhone 5C,iPad 4
4 armv64 iPhone5S 以后,iPad 4以后

备注
本文的汇编只包含Arm64

四、内存

        一个进程可用的地址空间如下图所示。


地址空间

        对于程序员来说,其看到的内存空间是连续的,实际内存的空间是破碎的——由于同时有多个进程存在,每个进程都会占用不同的内存空间,但是这个问题由操作系统为我们解决——它提供了虚拟内存。一般情况下,在程序员眼中,内存作为一个连续的内存空间使用即可。

五、学习汇编需要了解的几个内容

5.1 寄存器

        对于日常使用高级语言的程序员来说,其看到的是连续的内存空间。但是对于使用汇编的程序原来说,其面对的主要是寄存器。事实上,CPU内部也是分为运算器、控制器、寄存器、多级缓存。对于基于汇编语言的程序开发来说,寄存器是必须了解的一个概念,下文会对寄存器进行详细解释。

5.2 汇编指令

        高级语言一般使用if、for等关键字来表达;对于汇编语言来说,我们使用汇编指令来进行表达,例如sub、mov、add等。我们所学习的arm系列汇编是精简指令集的,其比intel系列的汇编要件的多。对于汇编指令可以先学习简单的几个,然后再碰到不理解的,就去查资料。
        ARM汇编开发指用ARM提供的汇编指令,进行ARM程序的开发。ARM汇编开发,有两种开发方式,一种是使用ARM汇编,一种是使用ARM GNU汇编。两种汇编开发,使用的汇编指令是完全一样的,区别是宏指令,伪指令,伪操作不一样。其实两种开发方式的区别在于所使用的编译工具不一样。对于ARM汇编,使用的是ARM公司开发的编译器,而ARM GNU汇编,是使用GNU为ARM指令集开发的编译器,也就是arm-gcc。不过这些差异一般都集中在宏指令,伪指令,伪操作几方面,对于我们入门学习影响不大。

5.3 堆栈

        我们都知道函数调用涉及到堆栈的管理,理解函数调用、嵌套函数等需要了解堆栈。下图展示了函数A调用函数B后的堆栈示意图。


函数堆栈

相关文章

  • iOS汇编研究-1-初识汇编

    一、什么是汇编语言 人类操作计算的能力需要使用一种方式来表达、需要使用一种方式来实现。目前,都是通过编程来实现的,...

  • iOS最新逆向进阶文章总汇!

    iOS 逆向 汇编相关iOS逆向:初识汇编[https://www.jianshu.com/p/777373e85...

  • iOS逆向学习(arm64汇编入门)

    iOS汇编 iOS汇编语音有很多钟。常见的有8086汇编、arm汇编、x86汇编等等。 arm汇编 iOS的架构从...

  • iOS Xcode 的汇编模式切换

    iOS Xcode 的汇编模式切换 iOS Xcode 的汇编模式切换

  • 寄存器的一点小知识

    汇编语言的种类 Intel:WindowsAT&T:Unix AT&T汇编主要用作iOS模拟器ARM汇编用于iOS...

  • iOS之ARM64汇编

    iOS的程序都是跑在ARM架构的机器上,所以iOS的汇编用到的就是ARM汇编 对于iOS开发汇编的分类: x86汇...

  • IOS 逆向开发(二十一) 汇编-基础

    @[TOC](IOS 逆向开发(二十一) 汇编-基础) 1. 汇编简介 为啥要需要学习汇编? 大学都学习过汇编语言...

  • 汇编一、初识汇编

    开发语言的发展 机器语言 由0和1组成的机器指令,如: 加:0100 0000 减:0100 1000 汇编语言 ...

  • 汇编(一) -- 初识汇编

    前言 最近准备学习汇编,然后在B站上看到叫iOS小贤的作者发的视频挺不错,打算跟着学,文章是看视频的笔记,最后有原...

  • 【汇编】一、初识汇编

    001--初识汇编 我们在学习逆向开发之前,我们要了解一个基本的逆向原理.首先我们是逆向iOS系统上面的APP.那...

网友评论

      本文标题:iOS汇编研究-1-初识汇编

      本文链接:https://www.haomeiwen.com/subject/cfmljltx.html