arm-none-linux-gnueabi-gcc -v

  gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202)

重点:

  代码中的内存分配, 地址从低到高: 代码段(RO, 保存函数代码) --> 只读数据段(RO, 保存常量) --> 数据段(RW, 已初始化并且初始值不为0的全局变量和静态变量) -->bss段(RW,  未初始化或者初始化为0的全局变量和静态变量).

  程序运行起来之后, 堆区和栈区的变量地址是动态分配的.

可以看出arm-none-linux-gnueabi-gcc编译和gcc编译结果是类似的.

#include<stdio.h>
#include<stdlib.h>int global_ni;        // .bss
int global_iz = 0 ; // .bssint global_inz = 1; // .dataconst int global_const0 = 0;
const int global_const1 = 1;void function(void)
{int local_fni;int local_finz = 1;int local_fiz = 0 ;static int static_fni;static int static_finz = 1;static int static_fiz = 0 ;int *p2 = (int*)malloc(sizeof(int));printf("子函数 局部变量 : \n");printf(" local_fni: %p \n", &local_fni);printf(" local_finz: %p \n", &local_finz);printf(" local_fiz: %p \n", &local_fiz);printf("子函数 静态变量 : \n");printf(" static_fni: %p \n", &static_fni);printf(" static_finz: %p \n", &static_finz);printf(" static_fiz: %p \n", &static_fiz);printf("子函数 指针变量 : \n");printf(" p2 : %p \n", p2);printf("子函数地址 : \n");printf(" function : %p \n", function);
}int main(int argc, char **argv)
{int local_mni;int local_minz = 1;int local_miz = 0 ;static int static_mni;static int static_minz = 1;static int static_miz = 0 ;int *p1 = (int*)malloc(sizeof(int));const int local_const0 = 0;const int local_const1 = 1;char* str_ptr = "char";printf("主函数 局部变量 : \n");printf(" local_mni : %p \n", &local_mni);printf(" local_minz : %p \n", &local_minz);printf(" local_miz : %p \n", &local_miz);printf("const 变量: \n");printf(" local_const0 : %p \n", &local_const0);printf(" local_const1 : %p \n", &local_const1);printf(" global_const0 : %p \n", &global_const0);printf(" global_const1 : %p \n", &global_const1);printf("主函数 malloc指针变量 : \n");printf(" p1 : %p \n", p1);printf("全局变量 : \n");printf(" global_ni : %p \n", &global_ni);printf(" global_inz : %p \n", &global_inz);printf(" global_iz : %p \n", &global_iz);printf("主函数 静态变量 : \n");printf(" static_mni: %p \n", &static_mni);printf(" static_minz: %p \n", &static_minz);printf(" static_miz: %p \n", &static_miz);printf("字符串常量 : \n");printf(" str_ptr : %p \n", str_ptr);printf("主函数地址 : \n");printf(" main : %p \n", main);printf("= = = = = = = = = = = = = = = \n");function();return 0;
}/*
= = = = = = = = = = = = = = =
测试:arm-none-linux-gnueabi-gcc -o test main.c arm-none-linux-gnueabi-objdump -Dhs test > test.dis 分析:
Disassembly of section .text: 000083e0
{
子函数地址 : function :
主函数地址 : main :   }Disassembly of section .rodata: 000088c0
{
const 变量: 全局global_const0     global_const1
字符串常量 :  str_ptr
}
//.data中是初始化为非0的全局变量和静态变量
Disassembly of section .data: 00010d5c
{ global_inz     static_minz   static_finz
}    //.bss中是初始化为0以及没有初始化的全局变量和静态变量
Disassembly of section .bss: 00010d70
{global_iz   static_mni  static_miz     static_fni   static_fiz  global_ni    }堆空间: //动态的
{
主函数 malloc指针变量 : p1 :   子函数 malloc指针变量 : p2 :
}栈空间:    //动态的
{
子函数 局部变量 : local_fiz :   local_finz:   local_fni :   const 变量: 局部local_const1 :   local_const0 :   主函数 局部变量 : local_miz :   local_minz:   local_mni :
}
*/

反汇编文件test.dis节选

test:     file format elf32-littlearmSections:
Idx Name          Size      VMA       LMA       File off  Algn0 .interp       00000013  00008134  00008134  00000134  2**0CONTENTS, ALLOC, LOAD, READONLY, DATA1 .note.ABI-tag 00000020  00008148  00008148  00000148  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA, LINK_ONCE_SAME_CONTENTS2 .hash         0000003c  00008168  00008168  00000168  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA3 .dynsym       000000a0  000081a4  000081a4  000001a4  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA4 .dynstr       000000a7  00008244  00008244  00000244  2**0CONTENTS, ALLOC, LOAD, READONLY, DATA5 .gnu.version  00000014  000082ec  000082ec  000002ec  2**1CONTENTS, ALLOC, LOAD, READONLY, DATA6 .gnu.version_r 00000040  00008300  00008300  00000300  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA7 .rel.dyn      00000008  00008340  00008340  00000340  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA8 .rel.plt      00000030  00008348  00008348  00000348  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA9 .init         0000000c  00008378  00008378  00000378  2**2CONTENTS, ALLOC, LOAD, READONLY, CODE10 .plt          0000005c  00008384  00008384  00000384  2**2CONTENTS, ALLOC, LOAD, READONLY, CODE11 .text         000004d8  000083e0  000083e0  000003e0  2**2CONTENTS, ALLOC, LOAD, READONLY, CODE12 .fini         00000008  000088b8  000088b8  000008b8  2**2CONTENTS, ALLOC, LOAD, READONLY, CODE13 .rodata       00000314  000088c0  000088c0  000008c0  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA14 .ARM.extab    00000024  00008bd4  00008bd4  00000bd4  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA15 .ARM.exidx    00000040  00008bf8  00008bf8  00000bf8  2**2CONTENTS, ALLOC, LOAD, READONLY, DATA16 .init_array   00000004  00010c38  00010c38  00000c38  2**2CONTENTS, ALLOC, LOAD, DATA17 .fini_array   00000004  00010c3c  00010c3c  00000c3c  2**2CONTENTS, ALLOC, LOAD, DATA18 .jcr          00000004  00010c40  00010c40  00000c40  2**2CONTENTS, ALLOC, LOAD, DATA19 .dynamic      000000f0  00010c44  00010c44  00000c44  2**2CONTENTS, ALLOC, LOAD, DATA20 .got          00000028  00010d34  00010d34  00000d34  2**2CONTENTS, ALLOC, LOAD, DATA21 .data         00000014  00010d5c  00010d5c  00000d5c  2**2CONTENTS, ALLOC, LOAD, DATA22 .bss          0000001c  00010d70  00010d70  00000d70  2**2ALLOC23 .ARM.attributes 0000002b  00000000  00000000  00000d70  2**0CONTENTS, READONLY24 .comment      0000002b  00000000  00000000  00000d9b  2**0CONTENTS, READONLY25 .debug_frame  00000044  00000000  00000000  00000dc8  2**2CONTENTS, READONLY, DEBUGGING

转载于:https://www.cnblogs.com/mylinux/p/5611287.html

gcc代码反汇编查看内存分布[2]: arm-linux-gcc相关推荐

  1. arm32 linux 内存分布,gcc代码反汇编查看内存分布[2]: arm-linux-gcc

    arm-none-linux-gnueabi-gcc -v gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202) 重点: 代码中的内存分配, 地址从低到高: ...

  2. Ubuntu12.4 64位 安装 arm linux gcc 4.3.2

    一.下载arm linux gcc 4.3.2 http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid ...

  3. linux查看主板最大内存容量,Linux下查看内存插槽数、最大...-linux下手动清理内存或缓存的...-查看linux主板内存槽与内存信息的方法详解_169IT.COM...

    一.先来看几个用dmidecode查看内存信息的例子. 1.查看内存槽数.那个槽位插了内存,大小是多少 代码示例: dmidecode|grep -P -A5 "Memory\s+Devic ...

  4. arm linux gcc fpic,【待整理】Gcc中编译和链接选项 -fpic -fPIC -fpie -fPIE -pie的含义

    [待整理]Gcc中编译和链接选项 -fpic -fPIC -fpie -fPIE -pie的含义 -fpic Generate position-independent code (PIC) suit ...

  5. centos arm linux gcc,CentOS安装arm-linux-gcc交叉编译器

    (注:首先需要明确需要安装centos系统的位数,即是32位的还是64位的.) 1.下载并解压文件:下载arm-linux-gcc-4.4.3.tgz到任意的目录下,进入这个文件夹 输入命令:# ta ...

  6. arm linux gcc 4.6.3,编译gcc-4.6.3

    编译gcc-4.6.3 准备 下载GCC 源码包 : gcc-4.6.3.tar.bz2 下载GCC 依赖包: gmp-5.0.4.tar.bz2, mpfr-3.1.0.tar.bz2 ,mpc-0 ...

  7. arm linux gcc交叉编译,arm-linux-gcc交叉编译器安装

    在网上下载arm-linux-gcc-4.4.3.tar.gz. 1.解压#tar -zxvf arm-linux-gcc-4.4.3.tar.gz 2.打开解压目录,将FriendlyARM文件夹拷 ...

  8. yum arm linux gcc 4.8,Linux-使用 yum 升级 gcc 到 4.8

    wget http://people.centos.org/tru/devtools-2/devtools-2.repo mv devtools-2.repo /etc/yum.repos.d yum ...

  9. cc arm linux gcc,(80分请教):armcc 与 arm-elf-gcc的区别?

    以下贴的是我在两者转换时常用的一个文件,有兴趣就看一下,嫌麻烦就去google一下,应该有相关的转换方法.我没找过.这些不全,其他的是一个宏文件,UE下用的,没法转成txt文件. ARM ASM    ...

最新文章

  1. codeforces-1132 (div2)
  2. 路由 php mysql_Php 连接 MySQL 的三种方式
  3. React入门系列 - 5. 表单与变量的关联
  4. hive 的udf 函数使用
  5. Ubuntu下pip安装、升级、卸载
  6. linux awk 教程,Linux awk使用案例教程
  7. linux网卡设置详解,史上最详细的Linux网卡ifcfg-eth0配置详解
  8. Mongodb千万级数据在python下的综合压力测试及应用探讨
  9. [转]快速清除SQL Server日志的两种方法
  10. bios是固定在微型计算机上的一块RoM,计算机硬件笔试试题
  11. http长/短轮询和WebSocket 的介绍和比较
  12. bootstrap 学习网址
  13. 博途中用的是c吗_一只“66 鸭”离奇出走,只为助蛋宝宝C位出道
  14. 对于成功的GDUUU商人来说
  15. SQL 使用总结六(改善数据库性能)
  16. python difflib模块_Python一起来找茬—difflib模块
  17. Python __init__.py 作用详解
  18. 《设计模式》读懂UML类图
  19. Python--网络编程-----基于UDP协议的套接字不会发生粘包
  20. 2022年度嵌入式C语言面试题库(含答案)

热门文章

  1. 【安卓开发 】Android初级开发(六)Activity生命周期
  2. java数据结构博客园_常见数据结构的Java实现
  3. flex 解析json文件_使用 Python 处理 JSON 格式的数据 | Linux 中国
  4. 经典游戏底层框架--迷宫游戏构成原理剖析
  5. android webview file,Android WebView 不支持 H5 input type=file 解决方法
  6. 微软电脑适合什么人用_#微软surface pro使用心得# 大学生挑电脑参考/平板与电脑二合一到底买的是什么...
  7. POE交换机供电原理及工作过程
  8. 【渝粤教育】电大中专金融与税收作业 题库
  9. 【渝粤题库】广东开放大学 标准法律法规 形成性考核
  10. 【无线电波】蓝牙Bluetooth来源 原理?有无辐射影响健康 是否安全!?