下面有一段代码:#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
voidfun()
{
printf("iamtheevilfunc\n");
exit(1);
}
intfun1(inta,intb)
{
int*p=&a;
p--;
*p=fun;
intc=0xcccc;
returnc;
}
intmain()
{
printf("beginrun..\n");
inta=..
分类:
系统相关 时间:
2016-06-23 01:15:18
阅读次数:
270
一张图说明我的理解: 画的是新开辟栈帧的过程,退出当前栈帧的过程与之相反。pop edi ,pop esi , pop ebx ,mov esp,ebp ,pop ebp 。之后,edi,esi,ebx恢复原来状态,ebp指向上一个栈帧栈底,esp指向上一个栈帧栈顶。 ...
分类:
其他好文 时间:
2016-06-18 22:18:58
阅读次数:
243
1. JVM运行时内存结构
1.由如下图构成。Runtime Data Area有如下几个区,其中PC程序计数器、虚拟机栈和本地方法栈是线程独享的,堆和方法区是线程共享的。Classload用来加载class文件,执行引擎用来执行程序,本地方法接口调用本地方法库。
2.java stack比较简单,每一个都是一个栈帧,每个栈帧由三部分构成。局部变量区、操作数区和帧数据区。局部变量是...
分类:
编程语言 时间:
2016-06-17 11:13:23
阅读次数:
227
一、认识栈帧先来看一段神奇的代码:(windows下,代码如下)#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
voidfun()
{
printf("YouAreDone\n");
Sleep(2000);
printf("SupposeTheComputerWillShutDown~~~~\n");
//上面这行如果换成system("re..
分类:
其他好文 时间:
2016-06-17 08:31:47
阅读次数:
269
在之前的章节中我们讲解了jvm的内存分配和管理,class的文件结构,就差之行了。那么从第十一章开始我们就开始讲java虚拟机是如何执行一个class文件的。
首先我们应该明确虚拟机是区别于物理机的一种说法,物理机的执行引擎是建立在处理器,硬件 ,指令集之上的。而我们的虚拟机则由自己实现。在虚拟机中大致分为两种执行方式:解释执行和编译执行。
我们之前讲过,虚拟机运行方法的时候运行在java虚拟...
分类:
其他好文 时间:
2016-06-13 11:49:42
阅读次数:
199
我们知道C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。栈帧也叫过程活动记录,是编译器用来实现函数调用的一种数据结构。那么在Linux下gcc编译器栈帧是怎么实现的呢?首先来看下面这段代码:这段代码的运行结果是会导致虚拟机重启。通..
分类:
系统相关 时间:
2016-06-12 18:48:08
阅读次数:
257
函数调用另一个词语表示叫作过程。一个过程调用包括将数据和控制从代码的一部分传递到另一部分。另外,它还必须在进入时为过程的局部变量分配空间,并在推出时释放这些空间。而数据传递,局部变量的分配和释放通过操纵程序栈来实现。栈帧也叫过程活动记录,是编译器用来实现过..
分类:
其他好文 时间:
2016-06-12 03:39:24
阅读次数:
207
如下程序,在主函数中并未调用,但为何会重启?在主函数中,调用了fun1的函数,而在fun1函数中,p--后,将栈帧上p地址上的内容修改成了fun的地址,因此,程序运行到fun函数中。2.修改栈帧上变量的内容(不通过变量名)测试结果:在fun函数中,b先压栈,a后压栈,变量b在变量a的..
分类:
其他好文 时间:
2016-06-10 23:24:14
阅读次数:
383
首先说一下进程和线程的区别 进程:是计算机运用程序实例,拥有独立的内存空间和数据(猜测内存堆应该是作用的进程上),一个进程包含多个子线程,不同进程相互独立; 线程:cpu执行的基本单位,拥有独立的寄存器和栈,同一进程下的线程共享地址&内存空间;线程栈存放方法的栈帧,每次方法执行都会新建栈帧压到栈顶, ...
分类:
编程语言 时间:
2016-06-10 23:12:16
阅读次数:
191
1在栈帧中修改函数调用地址使得程序运行跳转到自己指定的函数而原程序的作者完全不知道这段程序的执行中已经执行了别人的代码【可能是恶意的】2修改栈帧中的变量的值不通过变量名如修改变量b的值不通过变量b的名称【这需要对变量在栈帧中的分布有一定的了解】压栈是a先压栈b后..
分类:
其他好文 时间:
2016-06-08 06:59:42
阅读次数:
228