我一直在閱讀本地優化編譯器技術,但我一直沒有得到它們如何實現。這個想法是,優化器每次都會查看代碼的「窗口」,並以某種方式檢測模式並用更優化的版本替換它們。窺視孔優化模式
我的問題是,如何發現這些模式? (假設你的平臺是一個虛擬機,可以輸出組裝好的計算機的彙編代碼,就像Schocken的Hack一樣)。
人們是否真的手動檢查代碼(使用控制流圖或DAG或其他),然後收集所有已識別的模式並將它們編碼到優化器中?或者有一種自動方式。
例如,您在分析器中提供要優化的代碼,並且會噴出所述模式。如果是這樣,那麼如何開始寫一個?
我認爲這通常稱爲'inline caching'。您將在運行時發現使用此技術的近期JavaScript引擎的許多文獻。請參閱http://wingolog.org/archives/2012/05/29/inline-cache-applications-in-scheme。 – leppie 2012-08-05 16:32:26
這很有趣,我第一次碰到這個。我一般都在考慮減少強度,不斷評估,控制流量選擇等操作。 – gfountis 2012-08-05 16:40:57
這似乎是針對'運行時'是嗎?還是用於生成更緊密的彙編代碼? – gfountis 2012-08-05 16:44:09