Конвертор байт-кода java в CIL Д. С. Возжаев, 544 группа Научный руководитель: д. т. н. проф. В. О. Сафонов Рецензент: асп. А. Н. Близнюк Санкт-Петербургский Государственный Университет Математико-механический факультет Кафедра системного программирования
Постановка задачи Входные данные: –Работающая программа на Java, скомпилированная Sun javac или Eclipse Интерфейс командной строки Используется System.Reflection.Emit Выходные данные: –CIL-сборка exe или dll аналогичная входным данным
Обзор существующих решений Microsoft J# jilc.sourceforge.net Remotesoft Java.Net
Реализация Конвертирование метаданных Анализ потока данных Анализ потока управления Генерация кода
Caffeine Mark Решето Эратосфена Сортировка и генерация последовательностей Сложные условные переходы Рекурсивные вызовы методов Арифметика с плавающей точкой
test>jconv.exe […] -name test -src cmkit/embed -main CaffeineMarkEmbeddedApp test>test.exe Sieve score = (98) Loop score = (2017) Logic score = (0) String score = (708) Float score = (185) Method score = (166650) Overall score = test>java -cp cmkit/embed CaffeineMarkEmbeddedApp Sieve score = (98) Loop score = (2017) Logic score = (0) String score = (708) Float score = (185) Method score = (166650) Overall score = 44637
Результаты и перспективы Реализовано: –Конвертация метаданных, необходимых для выполнения программы –Конвертация байт-кода Java в СIL Пути развития: –Конвертирование отладочной информации –Улучшение диагностики ошибок –Java Native Interface
Список литературы –Java VM, –CLI, –jbimp, –Remotesoft Java.Net, –jilc, –IIT-Kanpur, –Microsoft.Net Framework SDK, –Microsoft Visual J++ 6.0, –Microsoft Java, –Tim Lindholm, Frank Yellin, “The JavaTM Virtual Machine Specification, Second Edition”, 1999, Prentice Hall PTR, ISBN: –Microsoft Phoenix, –Unmanaged Metadata API, –James Gosling, Bill Joy, Guy Steele, Gilad Bracha, “The Java(TM) Language Specification”, 2005, Prentice Hall PTR, ISBN: –Ecma-335, –Dominator, –T. Lengauer and R. E. Tarjan, “A fast algorithm for finding dominators in a flow graph”, Transactions on Programming Languages and Systems 1 (1979), –Keith D. Cooper, Timothy J. Harvey, and Ken Kennedy, “A Simple, Fast Dominance Algorithm”, –Eclipse, –Sun Javac, –Никлаус Вирт, «Алгоритмы и структуры данных», 1997, Санкт-Петербург: «Невский Диалект» –Caffeine Mark, –Java Native Interface, –PE and COFF File Format, –IEEE 754,