Re: Вопрос про стек CLI
От: Jack128  
Дата: 02.05.15 21:09
Оценка:
Здравствуйте, Cynic, Вы писали:

Щас буду гнать чушь, ибо даже не знаю, что такое Virtual Execution System, но тем ни менее чисто из здравого смысла
C>Изучая CLI возникло пару вопросов о который раньше как-то не задумывался.
C>* Я так понимаю, что это относится ко всем ассемблерам, но всё же: везде в книге пишут, что VES (Virtual Execution System) оперирует данными на стеке. Вопрос, почему используется именно стек?
А что, если не стек? Ну вот смотри, что такое программа? Это тупо вызов функции, которая вызывает другие функции, которые вызывают третьи функции и тд. Где хранить данные, которые требуютмся для работы функции ?? Тут 2 варианта, либо функция НЕ знает, сколько именно памяти треба для хранения данных, тогда только дин память. Либо функция знает, и тут — стек самая простая и очевидная структура,задали сколько памяти нужно для работы функции, сначале работы она выделилась, в конце функции — освободилась. Все просто.

C>* Как организован стек? Что область памяти понятно, но нафига например указывать директиву .maxstack в начале тела метода, если в стеке всё равно могут хранится значения разных типов и размер его, просто зная количество элементов в стеке, не посчитаешь?


Ну так компилятор же знает не только кол-во переменных, но и их тип, а значит вполне может вычислить сколько памяти под них нужно выделить.
Отредактировано 17.05.2015 15:58 VladD2 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.