汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp

转载 2012年03月23日 22:49:10

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。

比方说:add eax,-2 ;   //可以认为是给变量eax加上-2这样的一个值。

这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。

EAX 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。

EBX 是"基地址"(base)寄存器, 在内存寻址时存放基地址。

ECX 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。

EDX 则总是被用来放整数除法产生的余数。

ESI/EDI分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.

EBP是"基址指针"(BASE POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:

push ebp ;保存当前ebp
mov ebp,esp ;EBP设为当前堆栈指针
sub esp, xxx ;预留xxx字节给函数临时变量.
...

这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret 即可.

ESP 专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。

esp:寄存器存放当前线程的栈顶指针
ebp:寄存器存放当前线程的栈底指针
eip:寄存器存放下一个CPU指令存放的内存地址,当CPU执行完当前的指令后,从EIP寄存器中读取下一条指令的内存地址,然后继续执行。

一般寄存器:AX、BX、CX、DX
AX:累積暫存器,BX:基底暫存器,CX:計數暫存器,DX:資料暫存器

索引暫存器:SI、DI 
SI:來源索引暫存器,DI:目的索引暫存器 

堆疊、基底暫存器:SP、BP 
SP:堆疊指標暫存器,BP:基底指標暫存器 

EAX、ECX、EDX、EBX:為ax,bx,cx,dx的延伸,各為32位元 
ESI、EDI、ESP、EBP:為si,di,sp,bp的延伸,32位元

栈的基本模型

参数N

↓高地址

参数…

函数参数入栈的顺序与具体的调用方式有关

参数 3

参数 2

参数 1

EIP

返回本次调用后,下一条指令的地址

EBP

保存调用者的EBP,然后EBP指向此时的栈顶。

临时变量1

 

临时变量2

 

临时变量3

 

临时变量…

 

临时变量5

↓低地址


相关文章推荐

了解寄存器:ESI EDI变址寄存器

了解寄存器:ESI EDI变址寄存器
  • cay22
  • cay22
  • 2011-02-23 22:43
  • 8924

RDTSC命令详解

RDTSC - 读取时间标签计数器操作码指令说明0F 31RDTSC将时间标签计数器读入 EDX:EAX说明将处理器的时间标签计数器的当前值加载到 EDX:EAX 寄存器。时间标签计数器包含在 64 ...
  • TBWood
  • TBWood
  • 2010-04-27 21:55
  • 20988

eax ...edi esp ebp寄存器简介(转)

首先介绍我们会经常看到的一些寄存器: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 4个数据寄存器(EAX...

EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP 寄存器详解

参考一: EAX、ECX、EDX、EBX寄存器的作用 一般寄存器:AX、BX、CX、DX AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器...

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp,eip

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp

eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。 ...

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp 寄存器 含义

汇编 寄存器

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp

转自:http://blog.sina.com.cn/s/blog_65cab32d01012iln.html eax, ebx, ecx, edx, esi, edi, ebp, esp等都是...

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp

转自:http://hi.baidu.com/helloembed/blog/item/2fd65453843120511038c21a.html    eax, ebx, ecx, ed...

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊?

汇编语言里 eax, ebx, ecx, edx, esi, edi, ebp, esp这些都是什么意思啊? eax, ebx, ecx, edx, esi, edi, ebp, e...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)