Использование C#,, Net framework 4.5 notePadildasm и .ldarg - что случилось внутри?
Попытайтесь понять принципы языка CIL (IL). В настоящее время создать 2 простой метод
public static Int32 Add(Int32 a, Int32 b)
{
return a + b;
}
public Int32 Add1(Int32 a, Int32 b)
{
return a + b;
}
После открытия в ildasm.exe получил
Вопрос
Почему в методе Add КСС производить загрузку аргумент в стек 0 и второй в стек 1 - Где используется стек 0 в методе Add1 Или я что-то пропустил?
Не знаете, почему вы называете их «стек 0» и «стек 1». Вы загружаете, например. аргумент 0 * в * стек IL, вы не загружаетесь из стека IL. – svick
Я только начинаю читать о CIL и обнаружил, что в этом случае CIl использовал что-то вроде стека для хранения аргументов. Q-tu аргументов, определяемых '.maxstack 2', поэтому я думаю, что эта команда загружает аргумент в некоторый стек - на самом деле не shure - если я ошибаюсь - пожалуйста, исправьте меня – gbk
Да, CIL на основе стека:' ldarg.1' означает Msgstr "загрузить аргумент 1 и вставить его в стек". Но не имеет смысла говорить «стек 0» так, как вы это делали. – svick