OD中的某些符号是什么意思?

文章来源:admin    时间:2019-08-12

  以下数据源收集网络并不代表我的观点:eax,ebx,ecx,edx,esi,edi,ebp,esp等是汇编语言X86 CPU的通用寄存器的名称。这是一个32位寄存器。
在使用C语言进行描述时,可以将这些记录视为变量。
示例:addeax,-2; //您可以考虑将值-2添加到变量eax。
这些32位寄存器有许多用途,但每个寄存器都有一个具有自己特殊特性的“种子”。
EAX是累加器,是许多求和乘法指令的默认记录。
EBX是一个基址寄存器,用于存储存储器地址时的基址。
ECX是一个计数器,是重复前缀(REP)和LOOP指令的默认计数器。
EDX始终用于放置整数除法的余数。
ESI / EDI分别称为原点/目的地索引。这是因为在许多字符串操作指令中,DS:ESI指向源链,ES:EDI指向目标链。
EBP是基指针(BASEPOINTER),最常用作调用高级语言函数的帧指针。
解码时,您经常可以看到标准函数的起始代码:
Pushebp;保存当前的ebp
Movebp,esp; EBP设置为当前堆栈的指针
Subesp,xxx;为临时函数变量保留xxx字节。

通过这种方式,EBP构成了一个功能框架,而上面的EBP是原始的EBP,返回地址和参数。
在EBP下是临时变量。
当函数返回时,执行movep,ebp / popebp / ret。
ESP仅用作堆栈指针,称为堆栈指针的顶部。堆栈顶部是一个地址较小的区域。进入堆栈的数据越多,ESP越小。
在32位平台上,ESP一次减少4个字节。


下一篇:没有了
【返回列表页】