Почему директива .MaxStack является необязательной в коде MSIL?

В свободное время я изучаю ассемблер. Кто-нибудь может объяснить, почему .maxstack кажется необязательным в этой программе. Я пытался найти ответ в Интернете и в своей книге, но безуспешно, т.е. программа скомпилируется и запустится с комментарием .Maxstack:

//Add.il
//Add Two Numbers

.assembly extern mscorlib {}

.assembly Add
{
    .ver 1:0:1:0
}
.module add.exe

.method static void main() cil managed
{
    //.maxstack 2
    .entrypoint

    ldstr "The sum of 50 and 30 is = "
    call void [mscorlib]System.Console::Write (string)

    ldc.i4.s 50
    ldc.i4 30    
    add
    call void [mscorlib]System.Console::Write (int32)
    ret
}

Я компилирую программу в командной строке с помощью инструмента ILASM, а затем запускаю сгенерированный исполняемый.

13
задан mdb 16 May 2012 в 06:11
поделиться