• C之bss、data存储位置区分,使用objdump -t反汇编查看变量所处存储位置


    #include <stdio.h>
    #include <stdlib.h>
    
    int wei;               //未初始化的全局变量,bss区
    int you = 0;            //初始化为0的全局变量,bss区
    int qing = 1;            //初始化非0的全局变量,data区
    int main()
    {    
        static int ai;         //未初始化的静态局部变量,bss区
        static int ni = 0;      //初始化为0的静态局部变量,bss区
        static int everyday = 2;   //初始化为非0的静态局部变量,data区
        int forever;          //栈(stacks)
        
        return 0;
    }
    将main.c编译为汇编语言:gcc main.c -o main.o 

    objdump -t main.o | grep ".data"
    0000000000600800 l d .data 0000000000000000 .data 0000000000600808 l O .data 0000000000000004 everyday.2553 0000000000600800 w .data 0000000000000000 data_start 0000000000600800 g .data 0000000000000000 __data_start 0000000000600804 g O .data 0000000000000004 qing
    objdump -t main.o | grep ".bss" 
    0000000000600810 l    d  .bss   0000000000000000              .bss
    0000000000600810 l     O .bss   0000000000000001              completed.6364
    0000000000600818 l     O .bss   0000000000000008              dtor_idx.6366
    0000000000600824 l     O .bss   0000000000000004              ni.2552
    0000000000600828 l     O .bss   0000000000000004              ai.2551
    0000000000600820 g     O .bss   0000000000000004              you
    000000000060082c g     O .bss   0000000000000004              wei
  • 相关阅读:
    结婚也可以2.0!
    最近读书清单
    Win7旗舰版中的IIS配置asp.net的运行环境
    Google Chrome浏览器
    MySQL到NoSQL:数据的重思和查询方式的转换
    sqlserver游标概念与实例全面解说
    高效管理ASP.NET的JavaScript库
    如何提取网页中的flash
    如何手动启动tomcat
    tomcat单词缩写
  • 原文地址:https://www.cnblogs.com/weiyouqing/p/12568398.html
Copyright © 2020-2023  润新知