Рубрики

ВОРОТА | GATE-CS-2004 | Вопрос 10

Рассмотрим грамматическое правило E → E1 — E2 для арифметических выражений. Сгенерированный код предназначен для процессора, имеющего единственный пользовательский регистр. Операция вычитания требует, чтобы первый операнд был в регистре. Если E1 и E2 не имеют общего подвыражения, чтобы получить максимально короткий код
(A) E1 должен быть оценен первым
(B) E2 должен быть оценен первым
(C) Оценка E1 и E2 обязательно должна чередоваться
(D) Порядок оценки E1 и E2 не имеет значения

Ответ: (Б)
Объяснение:

E -> E1 — E2
Учитывая, что E1 и E2 не разделяют никакое подвыражение, наиболее оптимизированное использование однопользовательского регистра для оценки этого производственного правила происходит только тогда, когда E2 оценивается до E1. Это связано с тем, что когда мы будем оценивать E1 в регистре, E2 уже будет вычислена и сохранена в некоторой ячейке памяти. Следовательно, мы могли бы просто использовать операцию вычитания, чтобы взять регистр пользователя в качестве первого операнда, то есть значение E1 и E2 из его ячейки памяти, на которое ссылаются, используя некоторый индексный регистр или некоторую другую форму в соответствии с инструкцией.

Следовательно, правильный ответ должен быть: (B) E2 должен быть оценен первым.

Рекомендуемые посты:

ВОРОТА | GATE-CS-2004 | Вопрос 10

0.00 (0%) 0 votes