Size: a a a

2021 March 24

AK

Andrei Kurosh in .NET CIL Chat
источник

ED

Eugene Dorokhin in .NET CIL Chat
Хаха
источник
2021 April 01

D

Dark_Bull in .NET CIL Chat
Всех приветствую. Возник вопрос по 3.5 фреймворку. Есть какой-то аналог .SetMethodBody()? Нужно выставить значение для .maxstack вручную. Эмитить илгеном нельзя. Если объявляю через ILGenerator.DeclareLocal() лок.переменную совместно с CreateMethodBody(), то .maxstack равен нулю. Какие есть варианты его подправить?
источник

Dv

Dr. Friedrich von Ne... in .NET CIL Chat
Dark_Bull
Всех приветствую. Возник вопрос по 3.5 фреймворку. Есть какой-то аналог .SetMethodBody()? Нужно выставить значение для .maxstack вручную. Эмитить илгеном нельзя. Если объявляю через ILGenerator.DeclareLocal() лок.переменную совместно с CreateMethodBody(), то .maxstack равен нулю. Какие есть варианты его подправить?
А не вырезает ли оно неиспользуемые переменные само, а?
источник

D

Dark_Bull in .NET CIL Chat
вот, я вроде нашел ответ
источник

D

Dark_Bull in .NET CIL Chat
Переслано от Dark_Bull
есть конечно вариант сделать сканер в памяти по телу метода и подправить 3ий байт метода, но это такой гемор
источник

D

Dark_Bull in .NET CIL Chat
зачем тебе это? не уверен что стексайз вообще учитывается
источник

D

Dark_Bull in .NET CIL Chat
он вроде для peverify
источник

D

Dark_Bull in .NET CIL Chat
jit сам хуй к носу прикидывает свой размер макс стека
источник

D

Dark_Bull in .NET CIL Chat
Переслано от Dark_Bull
ну если бы так было, вряд ли у меня такой вопрос возник. а так просто эксепшн выбрасывает из-за того, что он 0 равен
источник

D

Dark_Bull in .NET CIL Chat
ну я за легаси джит не буду ничего говорить да
источник

D

Dark_Bull in .NET CIL Chat
дотнет 3.5 - это почти 12 лет прошло
источник

D

Dark_Bull in .NET CIL Chat
ой вернее уже 13
источник

D

Dark_Bull in .NET CIL Chat
Переслано от Dark_Bull
да и в 4.8 так же
источник

D

Dark_Bull in .NET CIL Chat
Переслано от Dark_Bull
ага, как я понял, если создается ILGenerator, то он ожидает, что только эмиттить можно, а вариант с .CreateMethodBody() и заранее заданным массивом с байтами инструкций в нем не учтен. Поэтому в последующих версиях фреймворка и реализовали .SetMethodBody()
источник

D

Dark_Bull in .NET CIL Chat
Вот этот вариант рабочий, но он только с 4.5 фреймворка. И как раз с этой версии дали возможность изменять .maxstack
источник

D

Dark_Bull in .NET CIL Chat
А вот это нерабочий вариант
источник

D

Dark_Bull in .NET CIL Chat
И в 4.5< не дают такой возможности(изменять .maxstack). ILGenerator несовместим с .CreateMethodBody(), а только с эмитом
источник

Dv

Dr. Friedrich von Ne... in .NET CIL Chat
Печаль, конечно.
источник

I

IdiocyAcceptance in .NET CIL Chat
Dark_Bull
А вот это нерабочий вариант
а почему он должен быть рабочим? по логике должно быть storeloc -> loadloc -> ret
источник