Главная / Программирование /
Разработка компиляторов / Тест 14
Разработка компиляторов - тест 14
Упражнение 1:
Номер 1
Трансляторы, ориентированные на платформу .NET, должны генерировать код:
Ответ:
 (1) SIL 
 (2) MSIL 
 (3) Java 
 (4) ILM 
Номер 2
MSIL, является:
Ответ:
 (1) виртуальной машиной 
 (2) языком высокого уровня некоторой виртуальной машины 
 (3) языком высокого уровня 
 (4) языком ассемблера некоторой виртуальной машины 
Номер 3
Программы на MSIL переводятся в исполняемый код реального процессора:
Ответ:
 (1) лишь непосредственно перед исполнением 
 (2) задолго до исполнения 
 (3) после исполнения 
 (4) лишь непосредственно после исполнения 
Упражнение 2:
Номер 1
Программы на MSIL переводятся в исполняемый код реального процессора c помощью:
Ответ:
 (1) Just-In-Time compilation 
 (2) динамической компиляции 
 (3) компиляции времени исполнения 
 (4) статической компиляции 
Номер 2
Основными чертами архитекутры виртуальной машины MSIL являются:
Ответ:
 (1) машина является стековой, причем стек является статически типизированным 
 (2) ячейки стека представлены как 4-байтовые или 8-байтовые знаковые целовые  
 (3) стек используется как правило только для хранения промежуточных результатов вычисления  
 (4) большинство команд MSIL получают свои аргументы на стеке, удаляют их со стека и помещают вместо них результат(ы) вычисления 
 (5) машина является объектно-ориентированной 
Номер 3
В MSIL существуют следующие варианты хранения переменных:
Ответ:
 (1) в статической области памяти, существующей все время выполнения программы  
 (2) в локальной области, которая выделяется при входе в метод 
 (3) в глобальной области, которая выделяется при входе в метод 
 (4) внутри объекта, размещенного в куче 
 (5) внутри объекта, размещенного в блоке 
Упражнение 3:
Номер 1
Статическая область памяти предназначена:
Ответ:
 (1) для статических полей класса 
 (2) глобальных переменных 
 (3) констант 
 (4) для автоматических переменных 
 (5) для параметров 
Номер 2
Локальная память выделяется:
Ответ:
 (1) для временных переменных 
 (2) для автоматических переменных 
 (3) для констант 
 (4) для параметров 
Номер 3
Куча предназначена для хранения:
Ответ:
 (1) динамических объектов 
 (2) статических объектов 
 (3) глобальных объектов 
 (4) локальных объектов 
Упражнение 4:
Номер 1
При реализации языков со вложенными процедурами и процедурными значениями, необходимо обеспечить доступ:
Ответ:
 (1) из вложенной процедуры к переменным из объемлющей среды 
 (2) из вложенной процедуры к константам из объемлющей среды 
 (3) из вложенной процедуры к переменным из внешней среды 
 (4) из вложенной процедуры к переменным из глобальной среды 
Номер 2
Если язык допускает использование вложенных процедур в качестве переменных процедурного типа, то единственным способом для реализации такого механизма в безопасном режиме является:
Ответ:
 (1) построение в глобальной среде замыкания процедуры 
 (2) построение в объемлющей среде замыкания процедуры 
 (3) построение в куче замыкания процедуры 
Номер 3
Машина MSIL ориентирована на безопасность работы:
Ответ:
 (1) с указателями 
 (2) с полями 
 (3) с переменными 
 (4) с константами 
Упражнение 5:
Номер 1
В безопасном режиме указатели на локальные переменные могут быть только:
Ответ:
 (1) переданы параметрами в другие функции 
 (2) переданы параметрами в другие указатели 
 (3) переданы параметрами в другие объекты 
 (4) переданы параметрами в другие операторы 
Номер 2
Присваивание указателей на локальные переменные в другие переменные:
Ответ:
 (1) запрещено 
 (2) разрешено 
 (3) разрешено в безопасном режиме 
 (4) разрешено в специальном режиме 
Номер 3
В .NET SDK входит программа PEVerify
, которая осуществляет:
Ответ:
 (1) проверку контекстной корректности безопасного модуля 
 (2) проверку типовой корректности входящего модуля 
 (3) проверку типовой корректности исполняемого модуля 
 (4) проверку корректности главного модуля 
Упражнение 6:
Номер 1
Какая команда MSIL осуществляет загрузку константы:
Ответ:
 (1) ldind
 
 (2) ldflda
 
 (3) ldstr
 
 (4) ldimm
 
Номер 2
Какая команда MSIL осуществляет загрузку адреса статического поля:
Ответ:
 (1) ldsflda
 
 (2) ldloca
 
 (3) ldflda
 
 (4) ldstr
 
Номер 3
Какая команда MSIL осуществляет загрузку адреса поля объекта:
Ответ:
 (1) ldind
 
 (2) ldloca
 
 (3) ldsflda
 
 (4) ldstr
 
 (5) ldflda
 
 (6) ldimm
 
Упражнение 7:
Номер 1
Для загрузки значений на стек предназначены следующие команды MSIL:
Ответ:
 (1) ldsfld
 
 (2) ldloc
 
 (3) ldloca
 
 (4) ldfld
 
Номер 2
Команда stind
берет со стека адрес значения вместе с самим значением:
Ответ:
 (1) и удаляет значение по выбранному адресу 
 (2) и записывает значение по произвольному адресу 
 (3) и удаляет значение по произвольному адресу 
 (4) и записывает значение по выбранному адресу 
Номер 3
Команды stloc
, stfld
, stsfld
эквивалентны следующим парам команд:
Ответ:
 (1) ldxxxxa; stind
 
 (2) ldxxxa; ldind
 
 (3) ldxxxxa; stin
 
 (4) ldxxxa; ldin
 
Упражнение 8:
Номер 1
Команды целочисленной арифметики существуют в:
Ответ:
 (1) знаковом варианте 
 (2) локальном варианте 
 (3) глобальном варианте 
 (4) беззнаковом варианте 
Номер 2
К командам целочисленной арифметики относятся:
Ответ:
 (1) ADD
 
 (2) SUB
 
 (3) SUP
 
 (4) DIV
 
 (5) MUL
 
 (6) MOD
 
Номер 3
В MSIL существуют следующие команды вызова:
Ответ:
 (1) CALLGLOB
 
 (2) CALL
 
 (3) CALLVIRT
 
 (4) CALLLOC
 
Упражнение 9:
Номер 1
Если команда вызова снабжена префиксом tail
, то это означает, что значение, возвращаемое вызываемой процедурой, является также:
Ответ:
 (1) возвращаемым значением и для следующей процедуры 
 (2) возвращаемым значением и для предыдущей процедуры 
 (3) возвращаемым значением и для всех процедур 
 (4) возвращаемым значением и для вызывающей процедуры 
Номер 2
Какие команды MSIL реализуют функциональность упаковки и распаковки значений:
Ответ:
 (1) BOX
 
 (2) OUTBOX
 
 (3) INBOX
 
 (4) UNBOX
 
Номер 3
MSIL содержит следующие команды для обработки исключений:
Ответ:
 (1) THROW
 
 (2) RETHROW
 
 (3) ENDFINALLY
 
 (4) ENDFILTER
 
 (5) LEAVE
 
Упражнение 10:
Номер 1
Следующая программа:using System;
class Fib
{
public static void Main (String[] args)
{
int a = 1, b = 1;
for (int i = 1; i != 10; ++i)
{
Console.WriteLine (a);
int c = a + b;
a = b; b = c;
}
}
}вычисляет:
Ответ:
 (1) ряды Фурье 
 (2) число Пи 
 (3) числа Фибоначчи 
 (4) тригонометрические функции 
Номер 2
В .NET предусмотрен специальный механизм доступа к метаданным приложения, который называется:
Ответ:
 (1) рефлексия 
 (2) распаковка 
 (3) генерация 
 (4) итерация 
Номер 3
Классы с каким суффиксом предназначены для генерации описываемых сущностей?
Ответ:
 (1) Builder
 
 (2) Type
 
 (3) Define
 
 (4) Field
 
 (5) Info
 
 (6) Assembly
 
Упражнение 11:
Номер 1
Структура MSIL задает определенную последовательность генерации кода, в которой код генерируется в во время следующих проходов:
Ответ:
 (1) все начинается с создания AssemblyBuilder
 
 (2) на втором шаге создаются ModuleBuilders
 
 (3) на третье шаге создается TypeBuilders
для классов всех уровней 
 (4) на четвертом шаге создаются MethodBuilders
и FieldBuilders
 
 (5) на последнем шаге генерируется собственно код 
Номер 2
Данная программа:class LowLevelSample {
public static void Run() {
int i;
i = 0;
try {
Start:
if (i == 10) throw new Exception();
Console.WriteLine (i);
i = i + 1;
goto Start;
}
catch (Exception) {
Console.WriteLine ("Finished");
}
}
}может использоваться в качестве примера:
Ответ:
 (1) генерации кода для виртуальной машины 
 (2) рефлексии кода для виртуальной машины 
 (3) итерации кода для виртуальной машины 
Номер 3
Атрибут RunAndSave
означает, что:
Ответ:
 (1) данная сборка может быть удалена с диска 
 (2) данная сборка может быть исполнена 
 (3) данная сборка может быть сохранена на диске 
Упражнение 12:
Номер 1
В случае наличия вложенных блоков их рекомендуется ограничивать вызовами:
Ответ:
 (1) BeginScope()
и EndScope()
 
 (2) DeclareLocal
и DeclareGlobal
 
 (3) StartTry
и EndTry
 
 (4) MarkLabel
и DefineLabel
 
Номер 2
Какой метод по массиву, содержащему типы параметров конструктора, находит в типе соответствующий конструктор:
Ответ:
 (1) GetConstructor
 
 (2) OpCodes.Newobj
 
 (3) GetMethod
 
 (4) System.Exception
 
Номер 3
Какой метод завершает генерацию try-catch блока:
Ответ:
 (1) EmitWriteLine
 
 (2) BeginCatchBlock
 
 (3) SetEntryPoint
 
 (4) LowLevelSample
 
 (5) EndExceptionBlock
 
 (6) EndTry