Главная / Программирование /
Разработка компиляторов / Тест 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