软件

删除一段代码,跟谋杀一个人,有什么区别......!?阅读源码,寻找真相...

cat_kele

Premature optimization is the root of all evil ---- Donald Knuth

Work --> Right --> Fast...

灵魂拷问:What is Type?

编译器为什么要将指令(.text)和数据(.data&.bss&.rodata)分开存放?

  1. 不同的section加载到内存后,可以设置不同的权限(按page),更安全;
  2. CPU的L1缓存分为指令缓存和数据缓存,代码和数据在内存中分开,有利于提高缓存命中率,加快执行速度;(CPU访问L1缓存的速度可能比访问内存快100倍)
  3. 节约内存,当存在多个相同image的进程时,只读区域(.text&.rodata)可以共享。
  4. 方便disassembling(手工编写的汇编,很容易实现不分开的效果)。
// TODO: 计划实现
// FIXME: 需要修复
// XXX: 需要优化

-- 目录[7] --

-- 文章[13] --