- 博客(10)
- 资源 (6)
- 收藏
- 关注
转载 EIP寄存器
EIP寄存器,用来存储CPU要读取指令的地址,CPU通过EIP寄存器读取即将要执行的指令。每次CPU执行完相应的汇编指令之后,EIP寄存器的值就会增加。 一、因为80386 CPU的寻址范围是4GB,所以它的寻址模式是平坦模式的。CPU通过读取EIP寄存器执行汇编指令的大致过程如下:1. 首先PE loader装载我们的PE文件,读取PE文件的基地址和入口RVA地址(相对于基地址的偏移
2014-05-14 14:53:19 21601 1
原创 Push, Pop, call, leave 和 Ret 指令图解
帧栈结构图:最近在研究如何在程序crash定位出错函数,补充的计算机系统基础知识。此篇主要是介绍IA32中帧栈结构(frame stack).
2014-05-14 14:32:27 63399 2
原创 常用寄存器及其说明
通用寄存器EAX累加(Accumulator)寄存器AX(AH、AL)常用于乘、除法和函数返回值EBX基址(Base)寄存器BX(BH、BL)常做内存数据的指针, 或者说常以它为基址来访问内存.ECX计数器(Counter)寄存器CX(CH、CL)常做字符串和循环操作中的计数器
2014-05-09 18:48:28 7025
转载 浅谈malloc,calloc,realloc函数之间的区别
内存区域可以分为栈,堆,静态存储区和常量存储区。局部变量,函数形参,临时变量都是在栈上获得内存的,它们获取的方式都是由编译器自动执行的。 C 标准函数库提供了许多函数来实现对堆上内存管理,其中包括:malloc函数,free函数,calloc函数和realloc函数。使用这些函数需要包含头文件stdlib.h1. malloc函数malloc函数可以从堆上获得指定字节的内
2014-05-09 18:37:55 587
转载 AT&T汇编leave指令
最近在看c程序的编译出来的汇编文件,发现涉及到函数调用的地方,在返回时有的时候使用的leave,有的时候直接使用的是popl %ebp。在AT&T汇编中,leave等效于以下汇编指令:movl %ebp, %esppopl %ebp为什么有的时候会使用leave,有的时候直接使用popl %ebp?这个问题一开始我也没搞懂,后来通过分析堆栈才有点清醒。二者的差别就在于是否使用
2014-05-07 15:13:02 7192 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人