Chinaunix首页 | 论坛 | 博客
  • 博客访问: 173326
  • 博文数量: 45
  • 博客积分: 1228
  • 博客等级: 中尉
  • 技术积分: 450
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-26 11:37
文章分类
文章存档

2013年(4)

2012年(3)

2011年(20)

2010年(18)

我的朋友

分类: LINUX

2010-09-16 11:03:41

2010-09-14

今日内容:

      计算机体系结构:

      MMU功能1:从虚拟内存到物理内存的映射。

                 2:管理内存的访问权限。

如果是32位处理器,则地址总线是32位的,与cpu执行单元相连,而经过MMU转换之后的外地址总线则不一定是32位的,也就是说虚拟空间和物理空间是独立的,32为处理器的虚拟地址是4G,而物理地址既可以大于也可以小于4GMMUVA映射到PA是以页尾单位的32位中通常是没页4kb

volatile int b; 变量会使变量b强制不放到缓存中。当此变量为外部I/O时要讲其声明为volatile

2010-09-15

ELF的三种文件类型:

  1. 可重定位的目标文件,只编译而未连接的.o文件。
  2. 可执行文件,连接后的能够执行文件。
  3. 共享库(share object)

objdump -dS file.o > file.s 对程序进行反汇编AT&T汇编)

Readelf –h file 查看elf的文件头格式。

  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00//文件elf校验

  Class:                             ELF32// 文件格式

  Data:                              2's complement//补码, little endian//小端

  Version:                           1 (current)版本

  OS/ABI:                            UNIX - System V

  ABI Version:                       0(应用程序二进制接口规范)

  Type:                              EXEC (Executable file)//可执行文件

  Machine:                           Intel 80386

  Version:                           0x1

  Entry point address:               0x8048370//入口地址

  Start of program headers:          52 (bytes into file)

  Start of section headers:          3572 (bytes into file)

  Flags:                             0x0

  Size of this header:               52 (bytes)

  Size of program headers:           32 (bytes)

  Number of program headers:         7

  Size of section headers:           40 (bytes)

  Number of section headers:         36

  Section header string table index: 33

预处理->编译->汇编:file.c->file.i->file.s->file.o

编译时查看预处理信息 gcc –E hello.c >hello.i,把源编译为汇编gcc –S hello.c –o hello.s

把汇编编译为目标文件 gcc –C hello.c –o hello.o

gcc –l库名 –L库的路径。

阅读(1022) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-09-16 15:29:22

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com