Компиляторы, 3 курс, 5 семестр, 2016/17
Материал из SEWiki
Версия от 00:03, 30 октября 2016; E.f.suvorov (обсуждение | вклад)
Лектор: Булычев Дмитрий Юрьевич.
https://github.com/dboulytchev/sample-compiler
Образ с настроенным софтом для виртуальной машины: OVA (логин внутри: me, пароль: me).
Вся информация на этой странице сдублирована из почты!
Содержание
Домашние задания
Домашнее задание от 13.09.2016
- Дописать интерпретатор стековой машины с символическим стеком (там надо поддержать оставшиеся 5 инструкций).
- Реализовать печать инструкций в правильном формате ассемблера x86 (см., например, https://en.wikibooks.org/wiki/X86_Assembly/GAS_Syntax).
- Реализовать правильное "обрамление" порожденной программы:
.text
.globl main
main:
<тут идет текст ассемблерного порождения>
ret
Документация
Конструкции управления
Базовые:
-
if E then S1 else S2 fi, гдеE— выражение, аS1иS2— операторы. Если значениеE вычисляется не в ноль, то исполняется <code>S1, иначе —S2. -
while E do S od</code, где <code>E — выражение, <code>S— оператор. Если значениеEвычисляется в не ноль, то исполняетсяS, а потом весьwhileзаново; иначе не делается ничего.
Дополнительные:
-
if E1 then S1 {elif E2 then S2 elif E3 then S3} ... [else Sk] fiэквивалентно:
if E1 then S1
else if E2 then S2
else if E3 then S3
....
[else Sk]
fi
repeat S until EэквивалентноS; while E == 0 do S odfor S1, E, S2 do S odэквивалентноS1; while E do S; S2 od