初始汇编(一)

符号代替机器语言,也称符号语言

比较常用的汇编语言种类:

  • 8086汇编(处理器是16bit的cpu)(结构简洁,容易理解,便于记忆 原理都相同的。建议先学)
  • Win32汇编
  • Win64汇编
  • ARM汇编(嵌入式,Mac,iOS)
CPU设备
4s-5 模拟器i386  (i386 是针对intel通用微处理器32位处理器)
5s-7s模拟器x86_64  (x86_64 是针对x86架构的64位处理器)
iPhone、iPhone 2、iPhone 3G、iPod Touch(第一代)、iPod Touch(第二代)armv6
iPhone 3Gs、iPhone 4、iPhone 4s、iPad、iPad 2armv7  (真机32位处理器需要armv7,或者armv7s架构)
iPhone 5、iPhone 5c (静态库只要支持了armv7,就可以在armv7s的架构上运行)armv7s
iPhone 5s、iPhone 6、iPhone 6 Plus、iPhone 6s、iPhone 6s Plus、 iPhone 7 、iPhone 7 Plus、iPad Air、iPad Air2、iPad mini2、iPad mini3、iPad mini4、iPad Pro arm64   (真机64位处理器需要arm64架构)

手机上安装的是二进制(在iphone4s,iphone6这样汇编指定是不一样的),

1.高级语言 ( 编译)> 汇编语言 (编译/反编译)> 机器语言 (运行)>   (汇编和机器语言一一对应,不同cpu 型号指令集不同)(其中几乎不能通过汇编反编译成高级语言,可以分析)

2.特点:

  • 可以直接访问 控制各种硬件设备,如存储器,CPU
  • 可以不受编译限制,对生成的二进制代码进行完全控制
  • 占内存少 速度快 (代码简短)(汇编可以混编)
  • 不区分大小写
  • 知识点多 需要对CPU等硬件结构了解,不易编写 调试 维护
  • 与机器指令一一对应,不同cpu 型号指令集不同,所以汇编语言不具备可移植性

3.用途:

  • 编写驱动程序,操作系统(Linux内核关键部分)
  • 对性能要求极高代码,可与高级语言混合
  • 软件安全(病毒分析与防治)(逆向 加壳 脱壳 破解 外挂 加密 解密 漏洞 黑客)
  • 理解计算机好途径
  • 高效代码基础
  • 弄清代码本质:(函数本质?++a + ++a + ++a底层执行?)
  • sizeof
  • 编译器做了什么?
  • Debug,release有什么关键部分

4.流程

CPU硬件结构非常重要,在汇编中大部分和CPU与内存相关

硬盘 (运行装载) >内存  (读写)> CPU > 终端设备

5.总线

CPU上有许多管脚,这一些管脚和总线连接,也就是CPU通过总线跟外部器件进行交互

总线(总线:一根根导线的集合)分类:

  • 地址总线 :可以通过编号来找到内存中的数据
  • 数据总线
  • 控制总线:控制(读/写)

*CPU和内存怎么交互?

通过上面3个总线

*内存是以字节为单位  比如0x0001与0x0002相差是一个字节(1字节=8bit)

*地址总线:

  •   它的宽度决定CPU的寻址能力(有n根线就是多少2^n的寻址能力)
  • 8086地址总线宽度能力是20,所以寻址能力1M(2^20)(单位按字节)

如果地址总线就2根,在2根都通电也就是2个1(2进制)也就是3(编号3从0-3) 也就是4个字节的数据(比如8080地址总线16根他的寻址能力多少kb?就是2^16 /1024,因为2^16是字节处于1024=64kb)

寻址能力影响使用多大内存条,如寻址能力不够8G,大于16G拿不到,其实每次升级内存是地址总线都会升级增加

*数据总线:

  • 它的宽度决定CPU单次传送量(传送速度)(每个线是一个bit位,如果有8根线就能传1字节)
  • 8086数据总线宽度是16,所以单次最大2个字节数据

*控制总线:

  • 它的宽度决定CPU对其他器件的控制能力能有多少种控制

6.内存

  • 内存地址空间的大小受CPU地址总线宽度的限制。8086的地址总线宽度为20,可以定位220个不同的内存单元(内存地址范围0x00000~0xFFFFF),所以8086的内存空间大小为1MB
  • 0x00000~0x9FFFF:主存储器。可读可写
  • 0xA0000~0xBFFFF:向显存中写入数据,这些数据会被显卡输出到显示器。可读可写
  • 0xC0000~0xFFFFF:存储各种硬件\系统信息。只读

*?

查询.app种包含什么架构? .app显示包文件找到Mach-o文件执行 file xxname 可看到架构

学习汇编用处?除了安全攻防外,在使用高级语言的会懂得怎么实现效率更高些等等~

发表回复

电子邮件地址不会被公开。 必填项已用*标注

Protected with IP Blacklist CloudIP Blacklist Cloud