Главная / Программирование /
Разработка компиляторов / Тест 11
Разработка компиляторов - тест 11
Упражнение 1:
Номер 1
Последовательность эквивалентных преобразований исходной программы, уменьшающих ее стоимость - это:
Ответ:
 (1) отладка 
 (2) тестирование 
 (3) оптимизация 
 (4) чистка 
Номер 2
Эффективность оптимизации зависит от:
Ответ:
 (1) стоимости программы 
 (2) от отношения эквивалентности 
 (3) от размера участка экономии 
Номер 3
Полезность применения оптимизации обусловлена следующими причинами:
Ответ:
 (1) распространением языков сверхвысокого уровня 
 (2) необходимостью поддержки и сопровождения готовой программы 
 (3) усилением контроля семантических ошибок 
Упражнение 2:
Номер 1
Применение оптимизаций способствует:
Ответ:
 (1) улучшению качества кода 
 (2) выявлению неочевидных ошибок 
 (3) выявлению очевидных ошибок 
 (4) ухудшению качества кода 
Номер 2
В зависимости от уровня представления программы различают следующие виды оптимизации:
Ответ:
 (1) оптимизацию на уровне исходного языка 
 (2) машинно-независимую оптимизацию 
 (3) межпроцедурную оптимизацию 
 (4) машинно-зависимую оптимизацию 
Номер 3
С точки зрения эффективности наиболее предпочтительной является:
Ответ:
 (1) оптимизацию на уровне исходного языка 
 (2) машинно-независимую оптимизацию 
 (3) машинно-зависимую оптимизацию 
Упражнение 3:
Номер 1
В зависимости от размера фрагмента оптимизации различают следующие виды оптимизации:
Ответ:
 (1) локальная 
 (2) квазилокальная 
 (3) глобальная 
 (4) межпроцедурная 
Номер 2
Возможны следующие зависимости между оптимизирующими преобразованиями:
Ответ:
 (1) независимость 
 (2) повторность 
 (3) неопределенность 
 (4) тупиковость 
Номер 3
Преобразования T1 и T2 называются независимыми, если применение одного из них к программе:
Ответ:
 (1) влияет на применимость другого 
 (2) не влияет на применимость другого 
 (3) не влияет на сохранность другого 
 (4) влияет на сохранность другого 
Упражнение 4:
Номер 1
Если преобразование T1 открывает дополнительные возможности для проведения преобразования T2, то - это:
Ответ:
 (1) тупиковость 
 (2) независимость 
 (3) повторность 
Номер 2
Стадиями оптимизации являются:
Ответ:
 (1) фрагментация 
 (2) проверка контекстных условий 
 (3) структуризация 
 (4) преобразование 
Номер 3
Выделение некоторого участка программы, к которому может быть применено преобразование - это:
Ответ:
 (1) фрагментация 
 (2) преобразование 
 (3) проверка контекстных условий 
 (4) проверка логических условий 
Упражнение 5:
Номер 1
Задачу фрагментации решает:
Ответ:
 (1) анализ стурктуры управления 
 (2) анализ процесса управления 
 (3) анализ потока управления 
 (4) анализ блока управления 
Номер 2
Одним из самых простых видов оптимизаций является:
Ответ:
 (1) локальная оптимизация 
 (2) глобальная оптимизация 
 (3) межпроцедурная оптимизация 
 (4) покадровая оптимизация 
Номер 3
Для реализации покадровой оптимизации используют понятие:
Ответ:
 (1) "окна" 
 (2) "кадра" 
 (3) "frame" 
 (4) "пакета" 
Упражнение 6:
Номер 1
Пара конечных множеств (V, E), называемых соответственно множествами вершин и дуг, при этом множество дуг представляет собой совокупность пар вершин - это:
Ответ:
 (1) ориентированным графом 
 (2) ассоциированным графом 
 (3) простым графом 
 (4) локальным графом 
Номер 2
Программу для оптимизации удобно представлять в виде:
Ответ:
 (1) размеченного графа блока управления 
 (2) размеченного графа процесса управления 
 (3) размеченного графа стурктуры управления 
 (4) размеченного графа потока управления 
Номер 3
Граф потока управления удовлетворяет следующим требованиям:
Ответ:
 (1) в start не входит ни одна дуга 
 (2) из stop не выходит ни одна дуга 
 (3) любая вершина достижима из start 
 (4) из любой вершины достижима вершина stop 
Упражнение 7:
Номер 1
В качестве алфавита операторов данной программы:int F (int a, int b)
{
int g = a, m = b;
if (a < b) {g = b; m = a;}
while (m)
{
int s = g;
g = m;
m = s % m;
}
return g;
}
выступает следующее множество:
Ответ:
 (1) {'g=a', 'm=b', 'a<b', 'm', 's=g', 'g=m', 'g=b', 'm=a', 'm=s%m', 'm=s%a'} 
 (2) {'g=a', 'm=b', 'm', 's=g', 'g=m', 'g=b', 'm=a', 'm=s%m'} 
 (3) {'g=a', 'm=b', 'a<b', 'm', 's=g', 'g=m', 'g=b', 'm=a', 'm=s%m'} 
 (4) {'g=a', 'm=b', 'a<b', 'm', 's=g', 'g=m', 'g=b', 'm=a'} 
Номер 2
При описании программ с использованием потока управления необходимо, чтобы разметка графа потока управления сопоставляла пустой оператор только тем вершинам, для которых число исходящих дуг:
Ответ:
 (1) не превосходит единицы 
 (2) превосходит единицы 
 (3) не превосходит две 
 (4) превосходит две 
Номер 3
При описании программ с использованием потока управления, два слова в алфавите операторов объявляются эквивалентными в том и только том случае, когда:
Ответ:
 (1) они равны с точностью до вхождения не пустых операторов 
 (2) они равны с точностью до вхождения пустых операторов 
 (3) они не равны с точностью до вхождения пустых операторов 
 (4) они не равны с точностью до вхождения не пустых операторов 
Упражнение 8:
Номер 1
При использовании def-use chains необходимо, чтобы множества входов и выходов для разных операторов:
Ответ:
 (1) не пересекались 
 (2) пересекались 
 (3) не были параллельны 
 (4) были параллельны 
Номер 2
При использовании def-use chains отображение DU описывает, как:
Ответ:
 (1) используются полученные процессами результаты 
 (2) используются полученные процедурами результаты 
 (3) используются выработанные блоками результаты 
 (4) используются выработанные операторами результаты 
Номер 3
Для формализации удаления пустого оператора требуется представление программы в виде:
Ответ:
 (1) графа потока управления с пустым оператором 
 (2) графа блока управления с пустым оператором 
 (3) графа потока управления с не пустым оператором 
 (4) графа блока управления с не пустым оператором 
Упражнение 9:
Номер 1
При формализации удаления пустого оператора вершина графа, помеченная пустым оператором:
Ответ:
 (1) удаляется вместе с входящими дугами 
 (2) удаляется вместе с исходящими дугами 
 (3) удаляется вместе с входящими и исходящими дугами 
 (4) удаляется вместе с помеченными дугами 
Номер 2
В данном примере: jmp .L1
.L1: movl buffer, %eax
addl %edx, %eax
movl buffer, %eax
addl %edx, %eaxпроисходит:
Ответ:
 (1) удаление перехода на следующую инструкцию 
 (2) удаление перехода на переход 
 (3) удаление перехода на предыдующую инструкцию 
Номер 3
В данном примере: jne .L1
movl buffer, %eax
jmp .L3
.L1: jmp .L2
jne .L2
movl buffer, %eax
jmp .L3
происходит:
Ответ:
 (1) удаление перехода на переход 
 (2) удаление перехода на предыдующую инструкцию 
 (3) удаление перехода на следующую инструкцию 
Упражнение 10:
Номер 1
Удаление мертвого кода заключается в удалении такого оператора, у которого:
Ответ:
 (1) не используются его выходы 
 (2) не используются его входы 
 (3) не используются его входы и выходы 
Номер 2
Для проведения чистки циклов вверх необходима фрагментация программы на уровне:
Ответ:
 (1) не сильно связных подграфов 
 (2) сильно связных графов 
 (3) не сильно связных графов 
 (4) сильно связных подграфов 
Номер 3
При чистке циклов вниз, выходной вершиной является такая вершина, среди непосредственных преемников которой есть вершина:
Ответ:
 (1) не принадлежащая данному графу 
 (2) имеющая только две дуги 
 (3) не принадлежащая данному подграфу 
 (4) не имеющая дуг 
Упражнение 11:
Номер 1
Границы, переменная и инкремент циклов должны быть одинаковыми, что является контекстным условием корректности:
Ответ:
 (1) чистки циклов вниз 
 (2) чистки циклов вверх 
 (3) объединения циклов 
 (4) удаления пустого оператора 
Номер 2
Раскрутка циклов заключается в дублировании:
Ответ:
 (1) тела цикла и сокращении числа итераций 
 (2) тела цикла и расширенного числа итераций 
 (3) тела цикла и произвольного числа итераций 
Номер 3
Замена (в частных случаях) использования более дорогих операций более дешевыми - это:
Ответ:
 (1) удаление пустого оператора 
 (2) понижение силы операций 
 (3) чистка циклов вверх 
 (4) объединение циклов 
Упражнение 12:
Номер 1
К упрощениям выражений можно отнести:
Ответ:
 (1) константные вычисления 
 (2) упрощения с использованием алгебраических тождеств 
 (3) понижение силы операций 
 (4) контекстные вычисения 
Номер 2
Если среди всех вычисляемых на участке экономии выражений выделяются эквивалентные, и затем их вхождения заменяются на вхождение новой переменной, хранящей заранее вычисленное значение этого общего выражения, то это:
Ответ:
 (1) экономия общих выражений  
 (2) экономия общих подвыражений  
 (3) экономия общих вычислений 
Номер 3
При глобалной оптимизации данного фрагмента исходной программы:y = f(x);
a = y*2;
if (y == f(x)) z = y*2+a;
else z = f(x)*2+a;
t = f(x)*2+a+z;возможной остаточной программой будет:
Ответ:
 (1) y=f(x);
a=y<<1;
if(y==f(x)) z = y<<1+a;
else z = f(x)<<1+a;
t = f(x)<<1+a+z;
 
 (2) y=f(x);
a=y<<1;
if (y==f(x)) z=a<<1;
else z=f(x)<<1+a;
t=f(x)<<1+a+z;
 
 (3) t = f(x)<<3;