脚本语言 汇编

汇编指令系统化分类

一、 主流指令集架构

1. x86 家族

1.1 x86 通用指令

1.1.1 数据传送
  • MOV, PUSH, POP, LEA, XCHG
1.1.2 算术运算
  • ADD, ADC, SUB, SBB, MUL, IMUL, DIV, IDIV
1.1.3 逻辑与位操作
  • AND, OR, XOR, NOT, NEG, SHL, SHR, SAR, ROL, ROR
1.1.4 控制转移
  • CMP, TEST, JMP, JE, JNE, JL, JG, CALL, RET, LOOP
1.1.5 字符串操作
  • MOVS, LODS, STOS, CMPS, SCAS, REP, REPZ, REPNZ

1.2 x86 系统/特权指令

1.2.1 中断与系统调用
  • INT n, IRET, SYSCALL, SYSENTER, SYSEXIT
1.2.2 处理器控制与状态
  • CLI, STI, HLT, NOP
1.2.3 模型特定寄存器
  • RDMSR, WRMSR, CPUID
1.2.4 内存管理
  • INVLPG, LGDT, SGDT, LLDT, SLDT, LTR, STR

2. ARM 家族

2.1 ARM32 (AArch32) 通用指令

2.1.1 数据处理
  • MOV, MVN, ADD, SUB, RSB, ADC, SBC, RSC

  • MUL, MLA, UMULL, UMLAL, SMULL, SMLAL

  • AND, ORR, EOR, BIC, LSL, LSR, ASR, ROR, RRX

2.1.2 内存访问
  • LDR, STR, LDM, STM, PUSH, POP
2.1.3 控制转移
  • B, BL, BX, BLX, SWI

2.2 ARM64 (AArch64) 通用指令

2.2.1 数据处理
  • ADD, SUB, ADC, SBC, NEG

  • MUL, SMULH, UMULH, SDIV, UDIV

  • AND, ORR, EOR, BIC, MVN, LSL, LSR, ASR, ROR

2.2.2 内存访问
  • LDR, STR, LDUR, STUR, LDP, STP, LDNP, STNP

  • LDXR, STXR, LDAXR, STLXR, LDADD, SWP

2.2.3 控制转移
  • B, BL, BR, BLR, RET, CBZ, CBNZ, TBZ, TBNZ

2.3 ARM 系统/特权指令

  • SWI (ARM32), SVC, HVC, SMC (ARM64)

3. RISC-V 家族

3.1 RISC-V 通用指令 (RV32I/RV64I 基础扩展)

3.1.1 内存访问 (Load/Store)
  • LW, SW, LD, SD, LB, SB, LH, SH
3.1.2 算术与逻辑
  • ADD, SUB, ADDI, LUI, AUIPC

  • AND, OR, XOR, ANDI, ORI, XORI

  • SLL, SRL, SRA, SLLI, SRLI, SRAI

3.1.3 控制转移
  • BEQ, BNE, BLT, BGE, BLTU, BGEU

  • JAL, JALR

3.2 RISC-V 系统/特权指令

  • ECALL, EBREAK, CSRRW, CSRRS, CSRRC

4. 8/16 位微控制器架构

  • 8051 内核

  • AVR 内核

  • PIC 内核

5. 历史/小众架构

  • Motorola 68k

  • MIPS32/64

  • PowerPC

  • SPARC

二、 按功能交叉索引

2.1 数据传送

  • **寄存器↔寄存器**: MOV (x86), MOV (ARM)

  • **寄存器↔内存**: MOV (x86), LDR/STR (ARM), LW/SW (RISC-V)

  • **立即数→目标**: MOV (x86), LDR (ARM), ADDI (RISC-V)

  • **堆栈操作**: PUSH/POP (x86/ARM32), PUSH/POP (ARM64伪指令)

  • **地址加载**: LEA (x86), LDR (ARM,伪指令), LUI/AUIPC (RISC-V)

2.2 算术运算

  • **加法/带进位加**: ADD/ADC (x86/ARM/RISC-V)

  • **减法/带借位减**: SUB/SBB (x86), SUB/SBC (ARM), SUB (RISC-V)

  • **乘法**: MUL/IMUL (x86), MUL/UMULL/SMULL (ARM), MUL (RISC-V)

  • **除法**: DIV/IDIV (x86), SDIV/UDIV (ARM), (RISC-V M扩展)

  • **增量/减量**: INC/DEC (x86), (ARM/RISC-V 通常用 ADD/SUB #1 实现)

2.3 逻辑与位操作

  • **与/或/异或**: AND/OR/XOR (x86/ARM/RISC-V)

  • **非/取反**: NOT/NEG (x86), MVN (ARM), (RISC-V 通常用 XOR -1 实现)

  • **移位/循环**: SHL/SHR/SAR/ROL/ROR (x86), LSL/LSR/ASR/ROR (ARM), SLL/SRL/SRA (RISC-V)

2.4 比较与测试

  • **比较**: CMP (x86/ARM), (RISC-V 通常用 SUB/SLT 实现)

  • **测试位**: TEST (x86), (ARM/RISC-V 通常用 ANDS 实现)

  • **位扫描/置位**: BSF/BSR/BTS (x86)

2.5 控制转移

  • **无条件跳转**: JMP (x86), B/BR (ARM), JAL/JALR (RISC-V)

  • **条件跳转**: Jcc (x86), Bcc (ARM), Bcc (RISC-V)

  • **调用/返回**: CALL/RET (x86), BL/RET (ARM), JAL/JALR/RET (RISC-V)

  • **循环**: LOOP (x86), (ARM/RISC-V 通常用组合指令实现)

2.6 字符串/向量 (SIMD)

  • **字符串操作**: MOVS/CMPS/SCAS (x86)

  • **SIMD 算术**: ADDPS/PMULLD (x86 SSE/AVX)

  • **SIMD 洗牌/移位**: SHUFPS/PSLLDQ (x86 SSE/AVX)

2.7 系统/特权

  • **中断/异常**: INT/IRET (x86), SWI/SVC (ARM), ECALL/EBREAK (RISC-V)

  • **系统调用**: SYSCALL/SYSENTER (x86), SVC (ARM), ECALL (RISC-V)

  • **读写控制寄存器**: MOV CRx/MSR (x86), CSRRW/CSRRS/CSRRC (RISC-V)

  • **缓存/TLB 维护**: INVLPG (x86), IC IALLU (ARM)

三、 汇编器伪指令与宏

3.1 段定义

  • .text, .data, .bss

3.2 符号与常量定义

  • .equ, .set

3.3 宏定义与条件汇编

  • .macro, .if, .endif

四、 学习资源与工具

4.1 官方文档与手册

  • Intel/AMD 官方手册

  • ARM 架构参考手册

  • RISC-V 非特权/特权规范

4.2 社区资源与速查表

  • 社区速查仓库

  • 在线指令集查询工具

4.3 开发与调试工具

  • 汇编器

  • 反汇编工具

  • 调试器

相关推荐
新鲜感~2 天前
汇编点灯基于SC32440
linux·汇编
fengye2071616 天前
板凳----------(枯藤 )vs2026+win10(第六章-4)
汇编
-曾牛6 天前
【汇编语言入门】从第一个加法程序吃透汇编核心基础
汇编·单片机·嵌入式硬件·汇编语言·病毒分析·lcx·逆向开发
切糕师学AI6 天前
ARM 汇编指令:ROR(循环右移)
汇编·arm开发
切糕师学AI6 天前
ARM 汇编指令:LSL(逻辑左移) 和 LSR(逻辑右移)
汇编·arm开发
草莓熊Lotso7 天前
Python 库使用全攻略:从标准库到第三方库(附实战案例)
运维·服务器·汇编·人工智能·经验分享·git·python
山峰哥8 天前
SQL优化中的索引策略与Explain分析实战
大数据·汇编·数据库·sql·编辑器
山峰哥9 天前
SQL调优实战指南:从索引设计到高并发场景优化全链路解析
大数据·汇编·数据库·sql·编辑器·区块链
fengye20716110 天前
板凳----------(枯藤 )vs2026+win10(第六章-2)
汇编
2501_9181269110 天前
用Python开发一个三进制程序开发工具
开发语言·汇编·python·个人开发