
编译原理
开水泡面
这个作者很懒,什么都没留下…
展开
-
过程活动调用。编译,运行
说说编译分区的理解编译的时候静态区,常量区,栈区。把变量分配到指定的位置。形成二进制流文件后,里面全是二进制代码, 这时代码区,数据区(常量放在DS中的PS中(这是一种方法)),堆栈区。先从代码区(CS)执行指令,堆栈段里过程记录表动态活动(这里就有函数栈的动态增长,(为什么说 返回局部指针是危险的 就表现在这里)函数调用完后SP返回到调用点的下一个位置,这时函数的局部指针所属的空间并原创 2012-01-06 11:56:51 · 501 阅读 · 0 评论 -
编译到执行 关于内存分配
这是一篇持续增长的记录;这是嵌套定义中 对非局部变量的引用,嵌套过程语言的栈式分配(c语言中不允许)我们所熟悉的PASCAL语言程序结构的特点是允许过程嵌套定义question:主要特点:(语言)一个过程可以引用包围它的任一外层过程所定义的标识符(如变量,数组或过程等)。(实现)一个过程执行时可以引用它的任一外层过程的最新活动记录中的某些数据(1) program原创 2012-01-07 18:25:20 · 500 阅读 · 0 评论 -
编译原理
第十章,目标程序运行时的存储组织,有关于C与指针中提到的 过程活动 记录表的知识, 还有display表,等一系列概念和方法原创 2012-01-04 22:31:54 · 2040 阅读 · 0 评论 -
gcc 后缀名
在做 判断c运行时环境的程序由于要得到汇编代码 gcc -c main.c -o main.s//发现 最后生成的.s文件里出现了大量的乱码》 这是由于我代码里面有大量的中文注释吗。于是又编写了个异常简单的程序,没有中文注释,发现还是 有乱码。于是用 gcc -E main.c -o a.E 发现没有问题,然后gcc -S a.E -o a.S汇编文件没有生成 倒是出现了这个原创 2012-03-30 16:13:30 · 742 阅读 · 0 评论 -
gcc 调试汇编 以及 对函数堆栈 的观察
每一个函数独占自己的栈帧空间。当前正在运行的函数的栈帧总是在栈顶。Win32系统提供两个特殊的寄存器用于标识位于系统栈顶端的栈帧。 4.1.4 寄存器与函数栈帧 每一个函数独占自己的栈帧空间。当前正在运行的函数的栈帧总是在栈顶。Win32系统提供两个特殊的寄存器用于标识位于系统栈顶端的栈帧。 (1)ESP:栈指针寄存器(extendedstackpointer),其内存放着一个指针,该指针永原创 2012-03-30 23:50:04 · 2364 阅读 · 0 评论