ITKeyword,专注技术干货聚合推荐

注册 | 登录

读书笔记:深入理解计算机系统 第七章

liujb861213 分享于 2012-02-22

推荐:读书笔记--《深入理解计算机系统》第一章 计算机系统漫游

第一章:计算机系统漫游 1.信息=位+上下文 ①. 系统中所有的信息——包括磁盘文件、存储器中的程序、用户数据、网络数据都是由一串 位 表示的。 ②. 区分不同对

2020腾讯云“6.18”活动开始了!!!(巨大优惠重现!4核8G,5M带宽 1999元/3年),
地址https://cloud.tencent.com/act/cps/redirect?redirect=1059

2020阿里云最低价产品入口,含代金券(新老用户有优惠),
地址https://www.aliyun.com/minisite/goods

int printf(const char * format,...);
int global_init_var = 84;
int global_uninit_var;
void fun1(int i)
{
    printf("%d\n",i);
}
int main()
{
    static int static_var = 85;
    static int static_var2;
    int a = 1;
    int b;
    func1(static_var + static_var2 + a + b);
}


objdump -h SimpleSection.o

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000050  00000000  00000000  00000104  2**2
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
  1 .data         00000008  00000000  00000000  00000154  2**2
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000004  00000000  00000000  00000000  2**2
                  ALLOC
  3 .drectve      00000024  00000000  00000000  0000015c  2**2
                  CONTENTS, ALLOC, LOAD, DATA
  4 .rdata        00000004  00000000  00000000  00000180  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  5 .eh_frame     00000058  00000000  00000000  00000184  2**2
                  CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA

objdump -s -d SimpleSection.o

Contents of section .text:
 0000 5589e583 ec188b45 08894424 04c70424  U......E..D$...$
 0010 00000000 e8000000 00c9c355 89e583e4  ...........U....
 0020 f083ec20 e8000000 00c74424 1c010000  ... ......D$....
 0030 008b1504 000000a1 00000000 01d00344  ...............D
 0040 241c0344 24188904 24e80000 0000c9c3  $..D$...$....... 
Disassembly of section .text:
00000000 <_fun1>:
   0:	55                   	push   %ebp
   1:	89 e5                	mov    %esp,%ebp
   3:	83 ec 18             	sub    $0x18,%esp
   6:	8b 45 08             	mov    0x8(%ebp),%eax
   9:	89 44 24 04          	mov    %eax,0x4(%esp)
   d:	c7 04 24 00 00 00 00 	movl   $0x0,(%esp)
  14:	e8 00 00 00 00       	call   19 <_fun1+0x19>
  19:	c9                   	leave  
  1a:	c3                   	ret    

0000001b <_main>:
  1b:	55                   	push   %ebp
  1c:	89 e5                	mov    %esp,%ebp
  1e:	83 e4 f0             	and    $0xfffffff0,%esp
  21:	83 ec 20             	sub    $0x20,%esp
  24:	e8 00 00 00 00       	call   29 <_main+0xe>
  29:	c7 44 24 1c 01 00 00 	movl   $0x1,0x1c(%esp)
  30:	00 
  31:	8b 15 04 00 00 00    	mov    0x4,%edx
  37:	a1 00 00 00 00       	mov    0x0,%eax
  3c:	01 d0                	add    %edx,%eax
  3e:	03 44 24 1c          	add    0x1c(%esp),%eax
  42:	03 44 24 18          	add    0x18(%esp),%eax
  46:	89 04 24             	mov    %eax,(%esp)
  49:	e8 00 00 00 00       	call   4e <_main+0x33>
  4e:	c9                   	leave  
  4f:	c3                   	ret  

Contents of section .data:

 0000 54000000 55000000                    T...U...       
global_init_var = 84 = 0x54

static int static_var = 85 = 0x55;

Contents of section .drectve:

推荐:深入理解计算机系统笔记

我的博客上的比这个排版显示的更好一些,特别是图片 http://notelzg.github.io/2016/06/29/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E8%AE%A1%E7%AE%97%E6%9C%BA%E

 0000 202d616c 69676e63 6f6d6d3a 225f676c   -aligncomm:"_gl
 0010 6f62616c 5f756e69 6e69745f 76617222  obal_uninit_var"
 0020 2c320000                             ,2..  

Contents of section .rdata:

 0000 25640a00                             %d.. 
来自printf("%d\n",i);


Contents of section .eh_frame:

 0000 14000000 00000000 017a5200 017c0801  .........zR..|..
 0010 1b0c0404 88010000 1c000000 1c000000  ................
 0020 04000000 1b000000 00410e08 8502420d  .........A....B.
 0030 0557c50c 04040000 1c000000 3c000000  .W..........<...
 0040 1f000000 35000000 00410e08 8502420d  ....5....A....B.
 0050 0571c50c 04040000                    .q......      




推荐:读书笔记--《深入理解计算机系统》第二章 信息的表示和处理

第二章 信息的表示和处理 1. 信息存储 ①、1个字节=8位,大多数计算机将1个字节作为最小的可寻址的存储器单位。(单片机除外) ②、机器级程序将存储器(一般指

int printf(const char * format,...);int global_init_var = 84;int global_uninit_var;void fun1(int i){ printf("%d\n",i);}int main(){ static int static_var = 85; st

相关阅读排行


相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。