SETHI7 (Материалы к контрольным работам), страница 2
Описание файла
Файл "SETHI7" внутри архива находится в следующих папках: Материалы к контрольным работам, Материалы (1). Документ из архива "Материалы к контрольным работам", который расположен в категории "". Всё это находится в предмете "конструирование компиляторов" из 6 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Онлайн просмотр документа "SETHI7"
Текст 2 страницы из документа "SETHI7"
RULE
Op ::= '*'
SEMANTICS
Code<0>="MUL".
RULE
Op ::= '/'
SEMANTICS
Code<0>="DIV".
Команды пересылки требуются для согласования номеров регистров, в которых осуществляется выполнение операции, с регистрами, в которых должен быть выдан результат. Это имеет смысл, когда эти регистры разные. Получиться это может из-за того, что по приведенной схеме результат выполнения операции всегда находится в регистре с номером метки, а метки левого и правого поддеревьев могут совпадать.
Для выражения A*B+C*(D+E) будет сгенерирован следующий код:
LOAD E,R1 - загрузить E на 1 регистр
ADD D,R1 - сложить D и E и результат заслать в 1
регистр
MUL C,R1 - умножить C на D+E с результатом в 1
регистре
MOVE R1,R2 - переслать результат в регистр R2
LOAD B,R1- загрузить B в 1 регистр
MUL A,R1 - умножить A на B с результатом в 1 регистре
ADD R1,R2 - сложить A*B и C*(D+E) и результат заслать
во регистр
В приведенных атрибутных схемах предполагалось, что регистров достаточно, чтобы правильно странслировать любое выражение. Если это не так, приходится усложнять схему трансляции и при необходимости сбрасывать содержимое регистров в память (или магазин).
140