看了《coredump问题原理探究》系列博文后。在Linux 64位下分析了栈分布情况,在函数参数,局部变量等上面和32位有一些差别。现记录下来,以供参考。
首先在64位下,寄存器esp变成了rsp,ebp变成了rbp,ip变成了rip。
环境:
1. Linux内核版本:
>cat /proc/version
Linux version 2.6.18-128.7.1.el5 (brewbuilder@norob.fnal.gov) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)) #1 SMP Mon Aug 24 08:12:52 EDT 2009
2. Linux版本:
>lsb_release -a
LSB Version: :core-3.1-amd64:core-3.1-ia32:core-3.1-noarch:graphics-3.1-amd64:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: ScientificSL
Description: Scientific Linux SL release 5.3 (Boron)
Release: 5.3
Codename: Boron
3. G++版本:
>g++ -v
Using built-in specs.