開發紀錄 2015q3 Homework #4
GitHub jit-constructrubi
 

預期目標

  • 學習動態編譯器
  • 學習 code review
  • 研究軟體最佳化
 
[Week #5] 本週派出第 4 份作業,讓同學體驗到效能分析、編譯器原理、calling convention、計算機組織與結構搭配 stack/heap、cache / branch predictor 對效能的影響,算是高度複合性的作業,儘管真正需要修改的程式碼不算多,但絕對有助於理解軟硬體系統的運作。
 
  • 作業要求 (A)
  • 難度:低 (適合之前 Homework #2 自認作不好者)
  • 研究其他同學在 Homework #2+程式成果,選出對自己有啟發 (正面) 的兩份作業成果,以及認為應該改善 (負面) 的三份作業,需要評註與解說 
  • 就事論事,不要怕得罪人,重點是提昇彼此的能力和視野
  • 一定要有出處
  • 將成果整合到自己的實做中
  • 指出自己獲得的啟發、程式效能的改善
  • 說明自己為何兩週前進度落後
  • 作業要求 (B)
  • 改善 JIT compiler,加入若干 optimization techniques
  • 紀錄若干效能最佳化技巧帶來的提昇
  • 作業要求 (C)
  • Rubi 實做切換到 DynASM,並且設計效能評估機制,從而改善 
  • 原本 x86 code generator 換成 DynASM 語法
  • 在 GitHub 上 fork rubi
  • 紀錄修改和效能分析
 
  •  [p.4][p.8] Brainfuck 只有8個指令
  • +,-,[,], >,<,., , 
  • [p.9] Brainfuck compiler
  • [p.10~p.12] Brainfuck interpreter
  • [p.15~p.31]各種敘述的brainfuck寫法
  • while、x=y、if、clean、cat、if-endif、if-else-endif、Multiply、Division、Hello World!、Bubble Sort
  • [p.33] Brainfuck Nested Interpreting (Structure)
  • [p.37] Using AI to Write Self-Modifying/Improving Programs
  • [p.38~] 執行時期最佳化
  • Mandelbrot: 渲染碎形幾何
  • [p.43~p.46]調整Pattern減少instruction數量以進行最佳化
 

改善 JIT compiler

  • README.md 這個地方要改成  ./interpreter progs/hello.bf -> ./interpreter progs/hello.b
The Interpreter
./interpreter progs/hello.bf