Вопрос

Я опытный программист на C # 3 / .NET 3.5, который хочет начать создавать некоторый runtime codegen, используя System.Reflection.Emit.DynamicMethod.Я бы с удовольствием перешел на следующий уровень, поближе познакомившись с IL.

Есть какие-нибудь указания (каламбур)?

Это было полезно?

Решение

Лучший способ научиться этому - написать что-то, что вы понимаете, а затем посмотреть на созданный файл.Кроме того, в зависимости от того, что вы делаете, вы можете использовать деревья выражений вместо того, чтобы испускать IL, а затем, когда вы компилируете деревья выражений, эти умные ребята из Microsoft создают IL для вас.

Другие советы

В дополнение к ответу Даррена я бы предложил выбрать или изобрести игрушечный язык и написать для него простой компилятор.Выберите что-нибудь, что не требует большого синтаксического анализа, например BF или язык на основе стека, и вы обнаружите, что написать компилятор на самом деле проще, чем кажется.

.NET Отражатель отлично подходит для изучения IL, созданного C # / VB.NET.

Это замечательный инструмент обучения.

Спецификация ECMA 335 находится в свободном доступе для скачивания здесь:http://www.ecma-international.org/publications/standards/Ecma-335.htm

Раздел III является наиболее подходящим для работы с MSIL, но я бы настоятельно рекомендовал раздел I также любому разработчику .NET, поскольку он значительно укрепит понимание платформы.

Опытный ассемблер .NET 2.0 IL. Хотя сейчас эта книга, возможно, немного устарела, для меня это все равно был отличный обзор.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top