汇编

CPU

存储访问操作移动内存中的数据

  1. 查看程序计数器( 存放下一条指令的内存地址 ),提取指定内存地址的数字
  2. 传递数字给指令解码器,解析指令
  3. 通过数据总线获取内存单元中( 需要处理的 )计算数据
    • 内存单元 -> 通用寄存器( 内部 )-> CPU
  4. 计算数据指令传递给算数逻辑单元做处理
  5. 计算结果通过数据总线传到指令指定的内存单元或寄存器中
典型寄存器大小 - 字长

地址数据指令在CPU中的表示没有区别

指令指针( 寄存器 )指向的字节会被 CPU 识别为指令

寻址方式
  • 立即寻址
    • 与地址无关
    • 指令本身包含数据
  • 寄存器寻址
    • 与地址无关
    • 指令包含要访问的寄存器
  • 直接寻址
    • 与地址有关
    • 指令包含要访问的内存地址
  • 变址寻址
    • 与地址有关
    • 指令包含要访问的内存地址
    • 指令指定一个变址寄存器( 类似偏移量,X86 中可指定比例因子 )
  • 间接寻址
    • 与地址有关
    • 指令包含要访问的寄存器( 寄存器存储待访问数据的指针
  • 基址寻址
    • 与地址有关
    • 指令包含要访问的寄存器( 寄存器存储待访问数据的指针 )
    • 包含地址偏移量
汇编代码

源代码 ----汇编( 汇编代码转化为机器指令 )----> 多个源文件 ----链接( 合并并添加必要信息 )----> 目标文件

以小数点“ . ”开头的指令( 汇编指令、伪操作 )
  • 不会被直接翻译成机器指令
  • 针对汇编程序本身
  • 汇编程序处理
.section .data    -    数据段的开始( 程序所需的所有内存空间 )
.section .text     -    文本段的开始( 程序指令的部分 )
.globl                  -    在汇编或链接过程中不应被废弃
_start                  -    标记程序的开始位置( 计算机加载程序后开始运行的位置 )

标签
  • 可以代表 “数据” 或 “指令
  • 后接 “( 冒号 )
  • 定义符号
操作数
  • 操作数
  • 目的操作数
  • 可以是
    • 数字
    • 内存位置引用
    • 寄存器
寄存器
  • 通用寄存器
    • %eax
    • %ebx
    • %ecx
    • %edx
    • %edi
    • %esi
  • 专用寄存器
    • %ebp
    • %esp
    • %eip
    • %eflags
movl $1, %eax
  • $立即寻址方式
  • 没有$,直接寻址,加载地址1中的数字



评论

此博客中的热门博文

ISO 14229-1-2020

AUTOSAR_SWS_CANDriver

Linux Driver Char Device 笔记

AUTOSAR_SWS_PWMDriver

AUTOSAR_SWS_PortDriver

AUTOSAR_SWS_ECUStateManager

EB - MCAL - MCU

AUTOSAR_SWS_ICUDriver

EB - MCAL - PWM