删除一段代码,跟谋杀一个人,有什么区别......!?阅读源码,寻找真相...
Premature optimization is the root of all evil ---- Donald Knuth
Work --> Right --> Fast...
灵魂拷问:What is Type?
- CPU指令是有类型的,寄存器或内存中的数据,按不同长度和所表达含义划分。
- C/C++代码中有各种类型,基础类型可与CPU指令类型对应,抽象类型可以是一块有特定含义的内存,或是数据和操作的集合。C/C++代码编译后,代码编译成CPU指令,类型消失,即运行时的无类型。
- Python变量没有类型,它们都只是对象的ref,但对象有类型!
- 定义时,只要有一点不同,就是不同Type。
- 类型的存在,可以让代码更加安全可靠,编译期,静态检查或运行时。
编译器为什么要将指令(.text)和数据(.data&.bss&.rodata)分开存放?
- 不同的section加载到内存后,可以设置不同的权限(按page),更安全;
- CPU的L1缓存分为指令缓存和数据缓存,代码和数据在内存中分开,有利于提高缓存命中率,加快执行速度;(CPU访问L1缓存的速度可能比访问内存快100倍)
- 节约内存,当存在多个相同image的进程时,只读区域(.text&.rodata)可以共享。
- 方便disassembling(手工编写的汇编,很容易实现不分开的效果)。
// TODO: 计划实现
// FIXME: 需要修复
// XXX: 需要优化
-- 目录[7] --
-- 文章[13] --