分类: C/C++
2008-05-26 22:09:35
/*********************************************\
TEXT: C程序的机器级表示
AUTHOR: arden chao
DATE: 2006-10-17
EMAIL:
VERSION:1.0.0
\*********************************************/
////////////////////////////////
//2006-10-23 函数的内存空间<1>
////////////////////////////////
前提知识点:little-endian和big-endian 、%esp\%ebp寄存器。
我们先来对C程序的内存布局做一下了解。这里我们引用《APUE》中的一些内容阐述:
一般,C程序由下面部分组成。
+正文段:CPU执行的机器码部分。
+初始化数据段:程序中所需赋初值的变量。
+非初始化数据段bss:程序开始之前,一些不需要初始化的变量。
+栈:自动变量、函数调用时所需要保存的信息。
+堆:动态分配的内存。
|----------------|
高地址 | | 命令行参数、环境变量
|----------------|
| 栈(向下) |
|----------------|
| |
| |
| |
| |
|----------------|
| 堆(向上) |
|----------------|
|未初始化数据|
|----------------|
| 初始化变量 |
|----------------|
| |
| 正文 |
低地址 |----------------|
这次我们给一个健全点的程序,它拥有著名的main程序入口点及一个函数fun: