64位汇编常见指令
1)64位的汇编
64位汇编基于x86-64(AMD64/Intel64)处理器架构,是Windows/Linux/macOS系统下的主流汇编语言,核心指令按功能分类如下:数据传输类:MOV(数据复制),LEA(取内存偏移地址),PUSH(压栈),POP(出栈),XCHG(交换操作数);算术运算类:ADD(加法),SUB(减法),MUL(无符号乘法),DIV(无符号除法),INC(自增1),DEC(自减1);逻辑运算类:AND(与运算),OR(或运算),NOT(非运算),XOR(异或运算),TEST(测试运算);程序控制类:JMP(无条件跳转),JZ/JNZ(按零标志跳转),CALL(调用子程序),RET(子程序返回),INT(软中断);处理器控制类:CLC(清进位标志),STC(置进位标志),HLT(暂停处理器),NOP(空操作);核心寄存器:RAX,RBX,RCX,RDX,RSI,RDI,RBP,RSP,R8~R15,段寄存器:CS,DS,ES,FS,GS,SS,标志寄存器:RFLAGS,指令寄存器:RIP。
2)64位的工具xdebug64.exe介绍
xdebug64.exe是x86-64架构专用的64位汇编/程序调试工具,适配64位Windows系统,是64位汇编开发核心调试软件。软件轻量便携,免安装,支持64位汇编指令单步调试,断点设置,寄存器实时查看(可监控RAX/RBX等全量64位寄存器值),内存地址与数据查看,堆栈帧解析,兼容MOV/LEA/ADD等64位汇编全指令集调试。支持加载64位可执行程序,汇编目标文件,可实时追踪指令执行流程,排查逻辑错误与内存寻址问题,操作简洁高效,是64位汇编入门与开发调试的必备工具,适配各类64位汇编编译后的程序调试需求。
3)64位的寄存器,内存,以及堆栈
寄存器:64位核心通用寄存器:RAX,RBX,RCX,RDX,RSI,RDI,RBP,RSP,扩展寄存器R8~R15;段寄存器:CS,DS,ES,FS,GS,SS;标志寄存器RFLAGS,指令寄存器RIP;RAX为核心累加寄存器,所有寄存器均为64位,向下兼容32位(EAX),16位(AX),8位(AL/AH)
内存:64位采用平坦式内存寻址模式,寻址空间高达2^64字节,无分段限制,内存地址为64位无符号数,可直接访问物理内存与虚拟内存,数据存储按字节对齐,读写效率远高于16位分段内存模式
堆栈:本质就是内存,用来存储临时变量,函数传递,断点现场保护,寄存器值暂存等;栈顶RSP:64位栈顶指针寄存器,始终指向栈区当前栈顶的最新数据地址,压栈PUSH自动减8,出栈POP自动加8;栈底RBP:64位栈基指针寄存器,指向当前栈帧的底部固定地址,用于定位栈内变量与函数参数,是栈区寻址的基准
堆:用于动态按需分配内存,存储程序运行中需要的大块数据如动态数组、对象实例、缓冲区等;由程序员通过C语言