Compiler engineer skill tree.

這年頭講的好像只有 web developer 才算是 developer

康拍樂工程師沒人想當 QQ

img

Compiler Engineer skill tree

  • Fundamental skills
    • fluent English
    • solid C/C++ (your main tool)
      • study the specs
    • scripting languages (save your time)
      • Bash
      • Python / Perl
    • gdb (investigate the binary)
      • debug with debug info (easy!)
      • debug without debug info (reverse engineering)
      • gdb scripting
    • version control (learn time traveling)
      • git / hg
    • UNIX skills
      • command line
      • editor
        • vim / emacs
  • Compiler skills
    • tiny compiler project
      • from C-- to MIPS
    • pick a compiler infrastructure
      • clang/LLVM (recommended)
      • GCC
    • Front end
      • parsing
      • syntax analysis
      • semantic analysis
      • IR codegen
      • textbook knowledge
        • CFG (context-free grammars)
        • regex
        • symbol table
    • middle end
      • compiler IR (intermediate representation)
      • passes and transformations
      • machine independent optimizations
    • backend
      • target lowering
      • instruction selection
      • register allocation algorithms
      • machine dependent optimizations
      • JIT
      • assembler
      • linker
        • relocation
        • linker script
      • executable binary format
        • ELF / PE
      • debug info
        • DWARF format
        • gdb details
    • programming language implementation (learn from the source code)
      • Lua (simple, easy to learn)
      • Python / Perl / Ruby / PHP / whatever
      • write your own
        • branfuck compiler
        • design your own language (nobody is going to use it though)
    • functional programming languages
      • Haskell
      • Lisp
  • Operating system knowledge
    • multitasking
      • process & thread
      • forking
      • scheduler
        • scheduling policies
        • preemptive
        • context switching
    • dynamic loader (ld.so)
    • memory management
      • virtual memory
        • MMU
        • page table
        • TLB
    • syscall
    • interrupt
    • kernel code trace
      • Linux kernel
      • FreeBSD
  • Computer Architecture
    • ABI design and call stack layout
    • pipeline
    • branch prediction
    • caching
    • microarchitecture design
    • textbook knowledge
      • MIPS 5 stages pipelining
    • industrial architectures
      • x86_64
      • ARM64
      • PowerPC
      • MIPS
    • toy project (design a toy ISA)
      • arch simulator
      • assembler / disassembler
      • port a C compiler (Clang/LLVM)
      • port a OS kernel (Linux)
      • port BusyBox
      • implement the ISA with Verilog/VHDL on a FPGA

Written by 

Nerd.

Related posts

發表迴響