lecture2_Intro_to_C
Intro to C
Great idea in Computer Architecture
1. Abstraction
- (Layers of Representation/Interpretation)
2. Moore’s Law(摩尔定律)
3. Principle of Locality/Memory Hierarchy(局部性和内存层次性原则)
4. Parallelism(并行)
- 加速频繁事件(Amdahl’s law)
5. Performance Measurement & Improvement
6. Dependability via redundancy(冗余实现可靠性)
RAID…
失去一个数据中心,但是整个网络不会宕机
Compiled & Interpreted(编译和解释)
Translation happens in two ways
○ Compilation
○ Interpretation
○ Some languages use both!C compilers map C programs directly into architecture-specific machinecode (string of 1s and 0s)
Java converts to architecture-independent bytecode which is then compiled by a just-in-time (JIT) compiler.
Python environments converts to Python bytecode at runtime instead of at compile-time.
- Runtime versus JIT compilation differ in when the program is converted to low-level assembly language that is eventually translated into machine code.
With C, there is generally a 3-part process in handling a .c file
- .c files are compiled into .s files ⇒ compilation by the compiler
- .s files are assembled into .o files ⇒ assembly by the assembler (this step is generally hidden, so most of the time we directly convert .c files into .o files)
- .o files are linked together to create an executable ⇒ linking by the linker
编译的优点和缺点
优点
- 很好的运行时表现(because it optimizes for a given architecture)
缺点
- 依赖特定的硬件平台
- 在新系统上必须重新 build
- “Change → Compile → Run [repeat]” iteration cycle can be slow during development
- but make only rebuilds changed pieces, and can compile in parallel: make -j
- linker is sequential though → Amdahl’s Law
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LZY的Code生活!