
一、CPU 寄存器通用x86架构寄存器是CPU内部高速存储单元比内存快很多用来临时存放指令、数据、地址。1. 通用寄存器存放运算数据x86 32位EAX、EBX、ECX、EDXEAX累加器算术运算、函数返回值EBX基址寄存器内存寻址ECX计数寄存器循环计数EDX数据寄存器乘法/除法、IO操作可以拆分使用32位(EAX) → 低16位AX → AH(高8位)、AL(低8位)2. 变址/基址寄存器寻址用ESI源变址寄存器字符串源地址EDI目的变址寄存器字符串目标地址EBP基址指针栈帧基地址函数栈ESP栈指针永远指向栈顶3. 控制寄存器 / 段寄存器16位CS代码段存放指令DS数据段存放普通数据SS栈段栈空间ES附加段额外数据段4. 标志寄存器 EFLAGS保存运算结果状态ZF零标志结果为0置1CF进位标志无符号数溢出SF符号标志结果正负OF溢出标志有符号数溢出简单总结通用寄存器做计算指针寄存器找内存地址段寄存器划分内存区域标志寄存器记录运算状态。二、汇编实现的几种形式1. 纯汇编完整汇编程序全部代码都是汇编指令用汇编器NASM / MASM直接编译成可执行文件。 特点没有C/C代码手动写入口、段定义直接调用系统中断/系统调用 示例片段mov eax,1 mov ebx,0 int 0x802. C/C 内嵌汇编inline asm内联汇编在C/C函数里面直接嵌入汇编代码C代码和汇编混写。GCCasm(汇编指令 :输出 :输入 :破坏寄存器);MSVC__asm { ... }示例GCCint a,b; asm(mov %1,%%eax; add %%eax,%%eax : r(a) : r(b));特点适合少量汇编直接操作寄存器和C变量交互。3. 汇编单独文件 C/C链接模块调用一部分代码写在.asm汇编文件汇编编译成目标文件.oC/C写主程序声明外部函数extern最后用链接器把C目标文件和汇编目标文件合并成程序C代码extern int add(int a,int b); //声明汇编里的函数 int main(){ add(1,2); }asm文件global add add: push ebp mov ebp,esp mov eax,[ebp8] add eax,[ebp12] pop ebp ret特点大型项目分离汇编实现底层函数C做业务逻辑。