Как понять эти параграфы в EMCA 335 относительно `.locals init`?

Из ECMA 335 I.12.4.1 вызовы методов

Массив локальной переменной всегда имеет значение NULL для типов объектов и для полей в типах значений, которые содержат объекты. Кроме того, если.locals init устанавливается, затем массив локальных переменных инициализируется равным 0 для целочисленных типов и 0,0 для типов с плавающей запятой. Типы значений не инициализируются CLI, но проверенный код предоставит вызов инициализатору как часть метода 'Код точки входа.

Так

Делает "инициализируется 0 для целочисленных типов и 0.0 для типов с плавающей запятой " имею в виду "обнуляет типы значений "?

Означает ли это: независимо от.locals initCLI должен всегда гарантировать, что типы объектов установлены на нуль при входе в метод? Тогда почему он различает типы объектов и типы значений здесь: isn 't обнулить типы значений, аналогичные обнулению типа объекта?

Как это понять?типы значений не инициализируются CLI "?

Что это значит: "проверенный код предоставит вызов инициализатору как часть метода 'Код точки входа "? Isn»проверка части CLI?

Из ECMA 335 III.1.8.1.1 алгоритм проверки

Проверяемые методы должны иметь.locals init задавать. Если не установлено, CLI может выдатьVerificationException где собрание не было предоставленоSecurityPermission.SkipVerification, При желании CLI может выбрать выполнение анализа определенных назначений (чтобы определить, какое местоположение записывается перед чтением), чтобы позволить компилятору CIL-to-native-code минимизировать влияние на производительность для этого требования.

Если.locals init задано, спецификация требует, чтобы CLI обнулял массив локальной переменной при входе в метод. Это означает, что машинный код обнуления должен выполняться при вводе. Итак, как быанализ определенного задания " помощь, учитывая, что возможно ненужное обнуление уже сделано?

Извинения, если я неЯ проясню. Я сделаю все возможное, чтобы улучшить свои вопросы на основе комментариев.

Ответы на вопрос(1)

Ваш ответ на вопрос