Jakie są najlepsze zasoby do nauki CIL (MSIL)

Jestem doświadczonym programistą C # 3/. NET 3.5, który chce zacząć robić jakiś kod runtime używając systemu.Odbicie.Emituj.DynamicMethod. Chciałbym przejść na wyższy poziom, zapoznając się z IL.

Jakieś wskazówki(Kalambury)?

Author: Kevin Fairchild, 2008-10-01

5 answers

Najlepszym sposobem, aby się tego nauczyć, jest napisanie czegoś, co rozumiesz, a następnie spójrz na IL to stworzył. Ponadto, w zależności od tego, co robisz, możesz używać drzew wyrażeń zamiast emitować IL, a następnie podczas kompilacji drzew wyrażeń, ci mądrzy goście z microsoft tworzą IL dla Ciebie.

 5
Author: Darren Kopp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-30 22:28:01

Oprócz odpowiedzi Darrena, sugerowałbym wybranie lub wymyślenie zabawkowego języka i napisanie prostego kompilatora do niego. Wybierz coś, co wymaga niewielkiego parsowania, jak BF lub język oparty na stosie, a przekonasz się, że pisanie kompilatora jest prostsze, niż się wydaje.

 6
Author: Nick Johnson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-01 08:55:22

. Net Reflector jest świetny do badania IL produkowanych przez C# / VB. NET.

To wspaniałe narzędzie do nauki.

 5
Author: Michael Burr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-30 22:47:44

Specyfikacja ECMA 335 jest dostępna do pobrania tutaj: http://www.ecma-international.org/publications/standards/Ecma-335.htm

Partition III jest najbardziej istotna w radzeniu sobie z MSIL, ale zdecydowanie polecam partition I również dla każdego dewelopera. NET, ponieważ znacznie wzmocni zrozumienie platformy.

 5
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-01 07:47:52

Expert. NET 2.0 IL Assembler. chociaż ta książka może być trochę przestarzała, nadal była dla mnie świetnym przeglądem.

 3
Author: Nescio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-30 22:31:21