Алексей Молчанов - Системное программное обеспечение. Лабораторный практикум
- Название:Системное программное обеспечение. Лабораторный практикум
- Автор:
- Жанр:
- Издательство:Array Издательство «Питер»
- Год:2005
- Город:Санкт-Петербург
- ISBN:978-5-469-00391-4
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Алексей Молчанов - Системное программное обеспечение. Лабораторный практикум краткое содержание
Книга ориентирована на студентов, обучающихся в технических вузах по специальностям, связанным с вычислительной техникой. Но она будет также полезна всем, чья деятельность так или иначе касается разработки программного обеспечения.
Системное программное обеспечение. Лабораторный практикум - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
mov eax,214
sub eax,ebx { 15: – (214, ^7) }
mov E,eax { 16::= (E, ^15) }
xor eax,eax
mov Result,eax { 17::= (CompileTest, 0) }
mov eax,A
cmp eax,B { 18: < (A, B) }
setl al
and eax,1
mov ebx,eax
mov eax,A
cmp eax,C { 19: < (A, C) }
setl al
and eax,1
mov edx,eax
or eax,ebx { 20: or (^18, ^19) }
mov ebx,eax
mov eax,E
cmp eax,0 { 21: = (E, 0) }
sete al
and eax,1
mov ecx,eax
mov eax,C
cmp eax,E { 22: <> (C, E) }
setne al
and eax,1
xor eax,eax
inc eax { 23: or (^22, 1) }
and eax,edx { 24: and (^19, ^23) }
{ 25: or (0, ^24) }
xor eax,eax { 26: and (0, ^25) }
xor eax,ecx { 27: xor (^21, ^26) }
xor eax,ebx { 28: xor (^20, ^27) }
jnz @F28 { 29: if (^28, ^32) }
jmp @M32
@F28:
xor eax,eax
mov A,eax { 30::= (A, 0) }
jmp @M33 { 31: jmp (1, ^33) }
@M32:
xor eax,eax
inc eax
mov A,eax { 32::= (A, 1) }
@M33:
mov eax,InpVar
cmp eax,0 { 33: > (InpVar, 0) }
setg al
and eax,1
mov ebx,eax
xor eax,eax
dec eax
cmp eax,InpVar { 34: <> (-1, InpVar) }
setne al
and eax,1
or eax,ebx { 35: or (^33, ^34) }
jnz @F35 { 36: if (^35, ^44) }
jmp @M44
@F35:
@M37:
mov eax,A
cmp eax,1 { 37: < (A, 1) }
setl al
and eax,1
jnz @F37 { 38: if (^37, ^43) }
jmp @M43
@F37:
mov eax,B
inc eax { 39: + (B, 1) }
add eax,A { 40: + (A, ^39) }
mov A,eax { 41::= (A, ^40) }
jmp @M37 { 42: jmp (1, ^37) }
@M43:
jmp @M46 { 43: jmp (1, ^46) }
@M44:
mov eax,InpVar
inc eax { 44: + (InpVar, 1) }
mov Result,eax { 45::= (CompileTest, ^44) }
@M46:
nop { 46: nop (0, 0) }
popad {восстанавливаем регистры}
end;
end;
var InpVar: integer;
begin
readln(InpVar);
writeln(CompileTest(InpVar));
readln;
end.
Литература
Основная литература
1. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции. – М.: Мир, 1978. – Т. 1, 612 с. Т. 2, 487 с.
2. Ахо А., Сети Р., Ульман Дж. Компиляторы: принципы, технологии и инструменты: Пер. с англ. – М.: Издательский дом «Вильямс», 2003. – 768 с.
3. Гордеев А. В., Молчанов А. Ю. Системное программное обеспечение. – СПб.: Питер, 2002. – 734 с.
4. Компаниец Р. И., Маньков Е. В., Филатов Н. Е. Системное программирование. Основы построения трансляторов: Учеб. пособие для высших и средних учебных заведений. – СПб.: КОРОНА принт, 2000. – 256 с.
5. Гордеев А. В. Операционные системы: Учебник для вузов. 2-е изд. – СПб.: Питер, 2004. – 416 с.
6. Олифер В. Г., Олифер Н. А. Сетевые операционные системы. – СПб.: Питер, 2002. – 544 с.
7. Молчанов А. Ю. Системное программное обеспечение: Учебник для вузов. – СПб.: Питер, 2003. – 396 с.
Дополнительная литература
8. Абрамова Н. А. и др. Новый математический аппарат для анализа внешнего поведения и верификации программ. – М.: Институт проблем управления РАН, 1998. – 109 с.
9. Архангельский А. Я. и др. Русская справка (HELP) по Delphi 5 и Object Pascal. – М.: БИНОМ, 2000. – 32 с.
10. Афанасьев А. Н. Формальные языки и грамматики: Учеб. пособие. – Ульяновск: УлГТУ, 1997. – 84 с.
11. Карпова Т. С. Базы данных: модели, разработка, реализация. – СПб.: Питер, 2001. – 304 с.
12. Бартеньев О. В. Фортран для студентов. – М.: Диалог-МИФИ, 1999. – 342 с.
13. Березин Б. И., Березин С. Б. Начальный курс C и C++. – М.: Диалог-МИФИ, 1996. – 288 с.
14. Браун С. Операционная система UNIX. – М.: Мир, 1986. – 463 с.
15. Бржезовский А. В., Корсакова Н. В., Фильчаков В. В. Лексический и синтаксический анализ. Формальные языки и грамматики. – Л.: ЛИАП, 1990. – 31 с.
16. Бржезовский А. В., Фильчаков В. В. Концептуальный анализ вычислительных систем. – СПб.: ЛИАП, 1991. – 78 с.
17. Волкова И. А., Руденко Т. В. Формальные языки и грамматики. Элементы теории трансляции. – М.: Диалог-МГУ, 1999. – 62 с.
18. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. – М.: Мир, 1975. – 544 с.
19. Дворянкин А. И. Основы трансляции: Учеб. пособие. – Волгоград: ВолгГТУ, 1999. – 80 с.
20. Дунаев С. UNIX System V. Release 4.2. Общее руководство. – М.: Диалог-МИФИ, 1995. – 287 с.
21. Евстигнеев В. А., Мирзуитова И. П. Анализ циклов: выбор кандидатов на распараллеливание. – Новосибирск: Ин-т систем информатики, 1999. – 48 с.
22. Жаков В. И., Коровинский В. В., Фильчаков В. В. Синтаксический анализ и генерация кода. – СПб.: ГААП, 1993. – 26 с.
23. Калверт Ч. Delphi 4. Энциклопедия пользователя. – Киев: ДиаСофт, 1998.
24. Карпов Б. И. Delphi: Специальный справочник. – СПб.: Питер, 2001 – 684 с.
25. Карпов Б. И., Баранова Т. К. C++: Специальный справочник. – СПб.: Питер, 2002. – 480 с.
26. Карпов Ю. Г. Теория автоматов: Учебник для вузов. – СПб.: Питер, 2003. – 208 с.
27. Керниган Б., Пайк Р. UNIX – универсальная среда программирования. – М.: Финансы и статистика, 1992. – 420 с.
28. Кэнту М. Delphi 5 для профессионалов. – СПб.: Питер, 2001.
29. Льюис Ф. и др. Теоретические основы построения компиляторов. – М.: Мир, 1979. – 483 с.
30. Мельников Б. Ф. Подклассы класса контекстно-свободных языков. – М.: Изд-во МГУ, 1995. – 174 с.
31. Немюгин С., Перколаб Л. Изучаем Turbo Pascal. – СПб.: Питер, 2000.
32. Павловская Т. А. C/C++: Учебник. – СПб.: Питер, 2001.
33. Полетаева И. А. Методы трансляции: Конспект лекций. – Новосибирск: Изд-во НГТУ, 1998. – Ч. 2. – 51 с.
34. Пратт Т., Зелковиц М. Языки программирования: разработка и реализация. – СПб.: Питер, 2001.
35. Рассел Ч., Кроуфорд Ш. UNIX и Linux: книга ответов. – СПб.: Питер, 1999. – 297 с.
36. Рейчард К., Фостер-Джонсон Э. UNIX: справочник. – СПб.: Питер, 2000. – 384 с.
37. Рудаков П. И., Федотов М. А. Основы языка Pascal: Учеб. курс. – М.: Радио и связь: Горячая линия – Телеком, 2000. – 205 с.
38. Серебряков В. И. Лекции по конструированию компиляторов. – М.: МГУ, 1997. – 171 с.
39. Страуструп Б. Язык программирования Си++. – М.: Радио и связь, 1991. – 348 с.
40. Федоров В. В. Основы построения трансляторов: Учеб. пособие. – Обнинск: ИАТЭ, 1995. – 105 с.
41. Финогенов К. Г. Основы языка ассемблера. – М.: Радио и связь, 1999. – 288 с.
42. Фомин В. В. Математические основы разработки трансляторов: Учеб. пособие. – СПб.: ИПЦ СПГУВК, 1996. – 65 с.
43. Чернышов А. В. Инструментальные средства программирования из состава ОС UNIX и их применение в повседневной практике. – М.: Изд-во МГУП, 1999. – 191 с.
44. Юров В. Assembler: Учебник. – СПб. и др.: Питер, 2000. – 622 с.
Примечания
1
Молчанов А. Ю. Системное программное обеспечение: Учебник для вузов. – СПб.: Питер, 2003. – 396 с.
2
Программные модули, реализующие таблицы символов, построены таким образом, что в зависимости от условий компиляции они могут либо различать, либо не различать прописные и строчные буквы. Условие компиляции реализовано через макрокоманды компилятора Delphi 5 в функции Upper в модуле TblElem (листинг П3.1, приложение 3). О принципах, на основе которых выполняются макрокоманды и условная компиляция, можно подробно узнать в [7, 13, 23, 25, 28, 32].
3
В отличие от обычных деревьев, корень у синтаксического дерева вывода находится вверху, а листья – внизу.
Читать дальшеИнтервал:
Закладка: