Mam następujący program do dodawania wartości. Kiedy nadchodzi komenda Dodaj wywołanie metody w głównej metodzie i zaglądając do pliku ILDASM.EXE. Rozmiar maksymalny to 2. Po odkomentowaniu rozmiar maksymalny staje się 4.Obliczanie wartości maksymalnej w kodzie IL
Dlaczego w przypadku metody głównej wszystkie zmienne nie wchodzą do stosu jako stos rozmiar pozostaje tylko 2, podczas gdy w przypadku metody Add call każda zmienna przechodzi na stos? Czy dzieje się tak dlatego, że główna kalkulacja metody odbywa się jedna po drugiej, tak aby pobierać tylko dwie zmienne na raz.
Proszę usunąć moje zamieszanie.
static void Main(string[] args)
{
int x = 2;
int y = 3;
int a = 4;
int b = 5;
int c = 6;
Console.WriteLine(x + y + a + b + c);
Console.WriteLine(Add(10, 20, 30, 40));
Console.ReadLine();
}
static int Add(int x, int y, int z, int a)
{
return x + y + z + a;
}
bym nieco podkręcić frazowanie u góry - to nie jest * deklaracja *, który wykorzystuje przestrzeń stosu, to jest * inicjalizacja *. –
@Damien_The_Unbeliever Dziękujemy za recenzję i korektę. Naprawić to. –
Więc to tak, jak IL nie jest generowane linia po linii. Chodzi mi o to, że jako x = 2 przyjmuje jeden stos spack, to dlaczego nie inne deklaracje wartości? Czy to tak, jak kompilator wiedział, że wymaga tylko dodania, więc 2 miejsca w stosie będą enogh. – TBAG