• 我们在哪一颗星上见过 ,以至如此相互思念 ;我们在哪一颗星上相互思念过,以至如此相互深爱
  • 我们在哪一颗星上分别 ,以至如此相互辉映 ;我们在哪一颗星上入睡 ,以至如此唤醒黎明
  • 认识世界 克服困难 洞悉所有 贴近生活 寻找珍爱 感受彼此

汇编知识

汇编语言知识点 云涯 4年前 (2020-09-07) 1697次浏览

寄存器

 x86 基本16位寄存器

  1. AX (Accumulator eXtend)
    • 英文名称: Accumulator eXtend
    • 功能: 它是主累加器。常用于算术、逻辑和数据传输操作。在许多操作中,如果涉及到一个寄存器,那么默认的寄存器通常是AX。
  2. BX (Base eXtend)
    • 英文名称: Base eXtend
    • 功能: 通常用作间接寻址的基址。在某些地址模式中,它可以作为一个指针,指向数据。
  3. CX (Count eXtend)
    • 英文名称: Count eXtend
    • 功能: 通常用作循环计数器。例如,在LOOP指令中,它表示循环应该执行的次数。
  4. DX (Data eXtend)
    • 英文名称: Data eXtend
    • 功能: 通常用于I/O操作和某些乘法和除法操作。例如,在16位乘法中,AX和DX一起作为结果的两部分。
  5. SI (Source Index)
    • 英文名称: Source Index
    • 功能: 通常用作源索引指针,特别是在字符串操作中。
  6. DI (Destination Index)
    • 英文名称: Destination Index
    • 功能: 通常用作目标索引指针,特别是在字符串操作中。
  7. SP (Stack Pointer)
    • 英文名称: Stack Pointer
    • 功能: 指向堆栈的顶部。它用于管理调用堆栈,包括函数调用、返回地址和局部变量。
  8. BP (Base Pointer)
    • 英文名称: Base Pointer
    • 功能: 通常用作堆栈帧的基址指针。它可以帮助访问函数的参数和局部变量。
  9. CS (Code Segment)
    • 英文名称: Code Segment
    • 功能: 指向当前执行代码的段。
  10. DS (Data Segment)
    • 英文名称: Data Segment
    • 功能: 指向当前使用的数据段。
  11. ES (Extra Segment)
    • 英文名称: Extra Segment
    • 功能: 通常用作附加的数据段指针。
  12. SS (Stack Segment)
    • 英文名称: Stack Segment
    • 功能: 指向当前使用的堆栈段。

在32位扩展出  Extended ,即EAX

  1. EAX (Extended Accumulator)
    • 英文名称: Extended Accumulator
    • 功能: 它是主累加器,常用于算术、逻辑和数据传输操作。在许多操作中,如果涉及到一个寄存器,那么默认的寄存器通常是EAX。
  2. EBX (Extended Base)
    • 英文名称: Extended Base
    • 功能: 通常用作一个指针或基址,特别是在某些地址模式中。
  3. ECX (Extended Count)
    • 英文名称: Extended Count
    • 功能: 通常用作循环计数器或迭代次数。例如,在LOOPREP指令中,它表示操作应该执行的次数。
  4. EDX (Extended Data)
    • 英文名称: Extended Data
    • 功能: 在某些乘法和除法操作中,EDX和EAX一起作为结果的两部分。它也可以用于I/O操作和其他数据操作。
  5. ESI (Extended Source Index)
    • 英文名称: Extended Source Index
    • 功能: 通常用作源索引指针,特别是在字符串和数组操作中。
  6. EDI (Extended Destination Index)
    • 英文名称: Extended Destination Index
    • 功能: 通常用作目标索引指针,特别是在字符串和数组操作中。
  7. ESP (Extended Stack Pointer)
    • 英文名称: Extended Stack Pointer
    • 功能: 指向堆栈的顶部。它用于管理调用堆栈,包括函数调用、返回地址和局部变量。
  8. EBP (Extended Base Pointer)
    • 英文名称: Extended Base Pointer
    • 功能: 通常用作堆栈帧的基址指针。它可以帮助访问函数的参数和局部变量。

此外,还有几个段寄存器,它们在32位模式下仍然存在,但在现代的平坦内存模型中,它们的重要性已经大大降低:

  1. CS (Code Segment)
    • 功能: 指向当前执行代码的段。
  2. DS (Data Segment)
    • 功能: 指向当前使用的数据段。
  3. ES (Extra Segment)
    • 功能: 通常用作附加的数据段指针。
  4. FS and GS
    • 功能: 这是在32位x86架构中引入的额外的段寄存器。它们可以用于多种目的,但在某些操作系统中,它们被用于特定的任务,如线程局部存储或操作系统内部结构。

 

在64位扩展出  Register ,即RAX。“Register”这个词在计算机架构中是一个通用术语,用于表示存储数据的小块硬件。

 

指令集

x86

  • 描述: 这是一个32位指令集,最初由Intel为其微处理器设计的。它起源于1970年代末的Intel 8086/8088微处理器。
  • 特点: 32位寄存器、32位内存寻址。

x86_64/x64

  • 描述: 这是x86架构的64位扩展,最初由AMD设计并命名为AMD64。后来,Intel也采用了这种设计,并将其称为Intel 64或简称x64。
  • 特点: 64位寄存器、64位内存寻址、向后兼容x86指令集。

amd64

  • 描述: 这实际上是AMD为其64位扩展到x86架构的指令集命名的另一个名称。它与x86_64或x64是同义词。
  • 特点: 与x86_64/x64相同。

arm32

  • 描述: 这是ARM架构的32位版本。ARM是一种RISC(精简指令集计算)架构,最初设计用于低功耗应用。
  • 特点: 32位寄存器、32位内存寻址、低功耗设计。
  • 应用:
    • 智能手机和平板电脑: 早期的Android和iOS设备主要使用32位ARM处理器。
    • 嵌入式系统: 许多嵌入式设备,如家用路由器、智能家居设备和工业控制器,使用32位ARM处理器。
    • 微控制器: ARM Cortex-M系列是为微控制器设计的32位RISC核心,用于各种低功耗和实时应用,如穿戴设备、传感器和其他IoT设备。
    • 开发板: 如Raspberry Pi的早期版本使用了32位ARM处理器。

arm64

  • 描述: 这是ARM架构的64位版本,也称为AArch64。
  • 特点: 64位寄存器、64位内存寻址、低功耗设计、与32位ARM指令集不完全兼容。
  • 应用
    • 现代智能手机和平板电脑: 大多数现代Android设备和Apple的iPhone和iPad(从iPhone 5s和iPad Air 2开始)都使用64位ARM处理器。
    • 服务器: ARM64架构也被用于某些服务器解决方案,因为它提供了高效、低功耗的计算能力。
    • 桌面和笔记本电脑: Apple的M1芯片,用于其最新的MacBook Air、MacBook Pro和Mac mini,是基于ARM64的。
    • 开发板: 如Raspberry Pi 3B+和Raspberry Pi 4使用了64位ARM处理器。
    • 高性能计算: 一些超级计算机也开始采用ARM64架构,因为它在某些计算密集型任务中提供了优越的性能和效率。

pushad

通用寄存器压栈。寄存器的入栈顺序依次是:EAX,ECX,EDX,EBX,ESP(初始值),EBP,ESI,EDI.

images

2. popad

通用寄存器出栈, 依次出栈,顺序为EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX, 依次将其值还回.

出栈前:

images

出栈后:

images


云涯历险记 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:汇编知识
喜欢 (0)