API для получения IL из байтового массива - PullRequest
10 голосов
/ 06 января 2009

В классе MethodBody есть метод GetILAsByteArray, который предоставляет тело метода. Я ищу для преобразования этого байтового массива в более понятные инструкции IL (в список или что-то в этом роде). Какие ресурсы, открытый исходный код или API доступны, чтобы помочь мне понять и преобразовать этот байтовый массив (или сделать это для меня)?

Я нашел это, но он не работает с генериками. Я в значительной степени ищу руководство для преобразования понимания этих байтов во всех версиях фреймворка.

CLI-документация также полезна для изучения инструкций IL, но я не понимаю, как ее использовать, чтобы эти байты имели смысл.

Ответы [ 3 ]

9 голосов
/ 01 мая 2009

Я только что написал метод расширения, чтобы получить более понятный список инструкций, используя GetILAsByteArray. Все довольно просто, API выглядит так:

public static IList<Instruction> GetInstructions (this MethodBase self);

Подробнее о реализации вы можете прочитать в моем блоге . Или вы можете взять реализацию и начать ее использовать.

2 голосов
/ 15 марта 2009

Посмотрите библиотеку Mono.Cecil.

1 голос
/ 06 января 2009

Это огромное начинание. Я написал старты для IL-ридера, и в нем реализовано довольно много опкодов: но вам нужно закончить его.

http://svn.ensemble -os.org / теги / OldOCJ / КСС /

Существует также MONO Cecil, который является полным набором функций.

...