Я пытаюсь интегрировать дизассемблер IL в свое приложение дизассемблера ( Android-дизассемблер ), но я не смог найти некоторые библиотеки, выполняющие дизассемблирование CIL.
Поэтому я пытаюсь разработать простой дизассемблер для CIL. Поэтому я искал через Интернет (переполнение стека, Google, Википедия и т. Д.). Однако я не смог выяснить, как код сборки CIL становится байт-кодом.
Я открыл приложение C # в бинарном редакторе (предсказывая, что смогу найти читаемый человеком исходный код IL), но я смог найти только некоторые двоичные файлы внутри него.
Как выглядит байт-код C #?
например. Байты инструкций X86 имеют переменную длину:
NOP = 0x90,
JMP = 0xEB 0xxx 0xxx 0xxx 0xxx, ...
к настоящему времени я могу найти только коды операций для каждой инструкции (https://en.wikipedia.org/wiki/List_of_CIL_instructions). Но я хочу знать, как операнды применимы и к кодам операций.
(например, 88 /r
для mov
, не только 88
.)