Вход на сайт
Автоматическое распознавание циклов в коде
773
NEW 17.11.11 14:53
Кто нибудь сталкивался с задачей автоматического распознавания циклов на уровне CLI в .NET?
Интересует методика выявления циклов и зависимостей переменных в них (глобальные, локальные и т.п).
По накидайте почитать. Или аналогичное для Java.
Интересует методика выявления циклов и зависимостей переменных в них (глобальные, локальные и т.п).
По накидайте почитать. Или аналогичное для Java.
Создание сайтов, онлайн-магазинов в Германии
NEW 17.11.11 19:20
в ответ Murr 17.11.11 18:50
Это не проблема, я использую CCI (Common Compiler Infrastructure - http://ccimetadata.codeplex.com/) для анализа сборки. Проблема в другом. В IL-коде нет циклов :) там есть только условные оператор перехода и отличить например if от while не совсем просто. Кроме того меня интересуют методы определения области видимости переменных, которые используются внутри цикла. Конечная цель всего этого (курсовая) научиться находить циклы, выявлять зависимости и если возможно, то автоматически распараллеливать найденные циклы и собирать сборку обратно.
Создание сайтов, онлайн-магазинов в Германии
NEW 17.11.11 21:33
в ответ Poiser 17.11.11 19:20
отличить например if от while не совсем просто.
------
Легко. Просто нарисуй диаграмку переходов для каждого цикла. Там их не много.
И смотри что подходит под минимальный вариант.
Ах, да... в цикле - всегда есть переход на более ранний код. У ИФа его не будет.
меня интересуют методы определения области видимости переменных
------
Никак. Этой информации нет (нет смысла ее там иметь и она не всегда она соответствует написанному) в коде. Только зная применяемую технику трансляции можно пытаться что-то найти. Но даже при этом не всегда можно выяснить нюансы различия.
автоматически распараллеливать найденные циклы
------
Не забудь, что циклы это не только do-while-for, но if+goto (c ограничениями) и foreach с итераторами...
------
Легко. Просто нарисуй диаграмку переходов для каждого цикла. Там их не много.
И смотри что подходит под минимальный вариант.
Ах, да... в цикле - всегда есть переход на более ранний код. У ИФа его не будет.
меня интересуют методы определения области видимости переменных
------
Никак. Этой информации нет (нет смысла ее там иметь и она не всегда она соответствует написанному) в коде. Только зная применяемую технику трансляции можно пытаться что-то найти. Но даже при этом не всегда можно выяснить нюансы различия.
автоматически распараллеливать найденные циклы
------
Не забудь, что циклы это не только do-while-for, но if+goto (c ограничениями) и foreach с итераторами...
NEW 19.11.11 11:02
в ответ Victor! 19.11.11 10:20
Ну в общем-то я так и делаю, строю граф и его анализирую. Просто думал может быть кто-то уже сталкивался с похожими задачами и поделится литературой. Пока самая большая проблема это второй граф - зависимостей. Мне нужно определять например где декларируются переменные, которые используются внутри цикла и являются ли они локальными (следовательно каждый поток может потом такие переменные сам для себя генерировать и использовать) или же они являются глобальными по отношению к телу цикла, и тогда ещё возможно использовать оператор редуцирования (не знаю как правильно по-русски).
Создание сайтов, онлайн-магазинов в Германии