
汇编
swanabin
这个作者很懒,什么都没留下…
展开
-
C++函数调用原理理解
空程序:int main(){00411360 push ebp ;压入ebp00411361 mov ebp,esp ;ebp = esp,保留esp,待函数调用完再恢复,因为函数调用中肯定会用到esp.00411363 sub esp,0C0h ;esp-=0C0h(192);为该函数留出临时存储区转载 2013-12-25 10:16:15 · 723 阅读 · 0 评论 -
eax,ebx,ecx,edx,esi,edi,ebp,esp寄存器的作用
eax,ebx,ecx,edx,esi,edi,ebp,esp寄存器的作用eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:addeax,-2 ; //可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,原创 2013-12-25 10:32:31 · 1445 阅读 · 0 评论 -
函数开始处的MOV EDI, EDI的作用
调试程序调试到系统库函数的代码时,总会发现系统函数都是从一条MOV EDI, EDI指令开始的,紧接着这条指令下面才是标准的建立函数局部栈的代码。对系统DLL比如ntdll.dll进行反汇编,可以发现它的每个导出函数都是如此,并且每个导出函数开始处的MOV EDI, EDI上面紧接着5条NOP指令。比如在WinDbg中查看TextOutA周围的代码: 0:000> u TextOutA-0x0转载 2013-12-25 10:59:15 · 7655 阅读 · 0 评论 -
CPUID 指令的使用
使用 CPUID 指令可以从 processor 厂商里获得关于 processor 的详细信息,CPUID 指令是从 Intel 486 处理器以后开始加入支持。1. 检测处理器是否支持 cpuid 指令现在的处理器都支持 cpuid 指令,确实没必要去检测是否支持,除非在古老的机器上运行才有必要。当然,这里只是作为一个知识点介绍,在 eflags.ID 标志位是 Processor转载 2014-02-27 14:49:25 · 17534 阅读 · 0 评论