Я разрабатываю компилятор, который испускает IL-код. Важно, чтобы полученный IL был JIT'ом для самых быстрых возможных машинных кодов с помощью компиляторов Mono и Microsoft.NET JIT.
Мои вопросы:
-
Имеет ли смысл оптимизировать шаблоны, например:
'stloc.0; ldloc.0; ret' => 'ret' 'ldc.i4.0; conv.r8' => 'ldc.r8.0'
и такие, или JIT достаточно умны, чтобы позаботиться об этом?
-
Есть ли спецификация со списком оптимизаций, выполняемых компиляторами Microsoft/Mono JIT?
-
Есть ли хорошее понимание с практическими рекомендациями/рекомендациями по оптимизации IL, чтобы компиляторы JIT могли, в свою очередь, генерировать наиболее оптимальный машинный код (по производительности)?