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




Главная / Программирование / Разработка компиляторов / Тест 11