我在閱讀以下演示文稿: http://wingolog.org/pub/qc-2012-js-slides.pdf 其中談到(4,10,19)內聯ASM生成作爲Javascript優化中使用的技術。執行生成的彙編程序內聯
在下面的紙張: https://sites.google.com/site/juliangamble/Home/Compilers%20Tutorial%202006-09-16.pdf?attredirects=0&d=1 在第30頁和31只講使用方案來產生,其隨後連接並且在隨後的OS處理中執行ASM。
如果您想要在現有流程中生成ASM並執行它,情況如何? (即沒有後續的鏈接並在單獨的步驟中執行)。這可以歸結爲(例如在C語言中)生成ASM,將字節寫入內存區域(代碼作爲數據)並添加函數頭並返回(與C調用程序兼容(類似於C調用程序到我們在上面的Goloum紙上看到的第3頁),然後我們將該數據指針轉換爲函數指針並將其稱爲(代碼爲代碼 - 代碼爲數據)。 (a)這種內聯代碼生成和執行的術語是什麼?
(b)有沒有一個簡單的「hello world」C例子?
我會稱它爲即時(JIT)編譯。許多Scheme實現都使用它,例如Racket和Larceny。 –
這是非常相似的這個問題http://stackoverflow.com/questions/3073653/can-function-pointers-be-used-to-run-data(但沒有例子) - 他們稱之爲自修改代碼 - 我不確定我是否同意我的案例中的分類 – hawkeye