Семинары по курсу «Архитектура ЭВМ и язык ассемблера» учебно-методическое пособие. Часть 2. - Е.А. Кузьменкова_ В.А. Падарян_ М.А. Соловьев
Описание файла
PDF-файл из архива "Семинары по курсу «Архитектура ЭВМ и язык ассемблера» учебно-методическое пособие. Часть 2. - Е.А. Кузьменкова_ В.А. Падарян_ М.А. Соловьев", который расположен в категории "". Всё это находится в предмете "архитектура эвм" из 2 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТимени М.В. ЛомоносоваФакультет вычислительной математики и кибернетикиЕ.А. Кузьменкова, В.А. Падарян, М.А. СоловьевСеминары по курсу"Архитектура ЭВМ иязык ассемблера"(учебно-методическое пособие)Часть 2МАКС ПРЕССМосква – 2014УДК 004.2+004.43(075.8)ББК 32.973-02я73К89Печатается по решению Редакционно-издательского Советафакультета вычислительной математики и кибернетикиМГУ имени М.В. ЛомоносоваРецензенты:C.Ю. Соловьев, профессорА.Н.
Терехин, доцентЕ.А. Кузьменкова, В.А. Падарян, М.А. СоловьевК89 Семинары по курсу «Архитектура ЭВМ и язык ассемблера»: учебно-методическое пособие. Часть 2. — М. Издательский отдел факультета ВМиКМГУ им. М.В. Ломоносова (лицензия ИД № 05899 от 24.09.2001); МАКС Пресс,2014. – 100 с.ISBN 978-5-89407-530-3ISBN 978-5-317-04886-0Учебное пособие содержит задачи и упражнения по второй части семинарских занятийкурса «Архитектура ЭВМ и язык ассемблера», прочитанного студентам 1 потока 1 курсафакультета Вычислительной математики и кибернетики МГУ в 2010-2014 гг.
Пособиепредназначено для студентов, изучающих основной курс программирования, а такжедля преподавателей и аспирантов.Ключевые слова: архитектура ЭВМ, язык ассемблера, x86, nasm, реализация языка Си.УДК 004.2+004.43(075.8)ББК 32.973-02я73This textbook contains problems and exercises for the second part of the seminar activities ofthe "Computer architecture and assembly language" course for 1st year 1st stream students ofthe faculty of Computational Mathematics and Cybernetics of Moscow State University thathad been delivered in 2010-2014.
The textbook is aimed at students learning the base programming course and at lecturers and postgraduate students.Key words: computer architecture, assembly language, x86, nasm, C language implementation.2ISBN 978-5-89407-530-3© Факультет вычислительной математики и кибернетики МГУ имени М.В. Ломоносова, 2014ISBN 978-5-317-04886-0© Кузьменкова Е.А., Падарян В.А., Соловьев М.А., 2014СодержаниеВведение ............................................................................................................................. 61.Циклы и многомерные массивы ..............................................................................
7Пример 1-1 Циклический сдвиг в массиве .................................................................. 7Компактное кодирование циклов ................................................................................ 9Пример 1-2 Аппаратная поддержка цикла ................................................................ 10Многомерный массив ..................................................................................................
11Пример 1-3 Матрица целых чисел .............................................................................. 12Пример 1-4 Транспонирование матрицы .................................................................. 13Пример 1-5 Восстановление размеров массива ....................................................... 15Массив указателей ....................................................................................................... 16Пример 1-6 Массив указателей vs. Двумерный массив ...........................................
16Задачи ............................................................................................................................ 182.Структуры и объединения ...................................................................................... 21Выравнивание данных в памяти ................................................................................. 21Пример 2-1 Размещение полей структуры в памяти ................................................
22Пример 2-2 Структуры и объединения ...................................................................... 23Пример 2-3 Структуры и объединения в x86_64 ....................................................... 24Работа с полями............................................................................................................ 25Пример 2-4 Чтение и запись полей ............................................................................ 25Битовые поля ................................................................................................................
27Пример 2-5 Взведение и сброс отдельных битов ..................................................... 27Задачи ............................................................................................................................ 283.Организация вызова функций ................................................................................ 32Аппаратный стек ........................................................................................................... 32Пример 3-1 Пересылки без MOV ................................................................................ 32Соглашение вызова cdecl............................................................................................. 33Пример 3-2 Скалярное произведение .......................................................................
34Пример 3-3 Рекурсивная функция .............................................................................. 36Пример 3-4 Восстановление прототипа функции ..................................................... 37Пример 3-5 Нарушение соглашения вызова ............................................................. 393Вызов функций по указателю ......................................................................................
39Пример 3-6 Просто указатель ..................................................................................... 39Пример 3-7 Массив в качестве возвращаемого значения ....................................... 40Пример 3-8 Функциональный тип у возвращаемого значения ............................... 41Использование библиотечных функций .................................................................... 42Пример 3-9 Динамическая память и переменное число параметров ....................
43Пример 3-10 Стандартный ввод/вывод своими силами .......................................... 45Пример 3-11 Дамп файла ............................................................................................ 47Устройство фрейма функции ....................................................................................... 49Пример 3-12 Карта фрейма ......................................................................................... 50Пример 3-13 Эксплойт ................................................................................................. 52Задачи ............................................................................................................................
544.Различные соглашения вызова функций............................................................... 59Оптимизация вызова функций .................................................................................... 60Пример 4-1 “Omit frame pointer” ................................................................................ 60Пример 4-2 Соглашение fastcall ..................................................................................
61Очистка стека от аргументов вызова .......................................................................... 62Пример 4-3 Соглашение stdcall ................................................................................... 63Пример 4-4 Передача структуры в функцию в качестве параметра .......................
63Пример 4-5 Возвращаемое значение – структура .................................................... 65Пример 4-6 Вызов функции с возвращаемой структурой ........................................ 67Задачи ............................................................................................................................
695.Сопроцессор x87 и обработка чисел с плавающей точкой.................................. 72Представление вещественных чисел – числа с плавающей точкой........................ 72Пример 5-1 Перевод числа в модельную кодировку ............................................... 73Сопроцессор x87 ........................................................................................................... 74Пример 5-2 Взятие модуля числа ............................................................................... 75Пример 5-3 Разность чисел ......................................................................................... 76Пример 5-4 Ввод и вывод чисел с плавающей точкой .............................................
77Пример 5-5 Сравнение чисел с плавающей точкой .................................................. 78Пример 5-6 Вычисление площади треугольника ...................................................... 794Задачи ............................................................................................................................ 80Ответы и решения ............................................................................................................ 85Литература ........................................................................................................................
985ВведениеПособие содержит кратко изложенный материал семинарских занятий по курсу«Архитектура ЭВМ и язык ассемблера», читаемого для студентов 1 потока 1 курсафакультета ВМК МГУ. Рассматриваются темы занятий второй половины семестра,такие как: организация циклов, работа с агрегатными типами данных, различныесоглашения вызовов функций, работа с числами с плавающей точкой. Особое внимание уделено двоичному (бинарному) интерфейсу приложений платформы IA-32.На примере компилятора gcc показывается, как в Си-программах реализуется этотинтерфейс, и каким образом он может повлиять на скорость работы программы иее безопасность.Для разбора задач требуется свободное владение материалом первой части курса.Каждая рассматриваемая тема содержит краткий вводный материал, детально разобранные типовые задачи и задачи для самостоятельной работы, часть которыхснабжена ответами.Методическое пособие предназначено для преподавателей, ведущих практические занятия в поддержку лекционного курса «Архитектура ЭВМ и язык ассемблера» для студентов 1 курса, а также рекомендуется студентам при подготовке кписьменному экзамену.61.Циклы и многомерные массивыРабота с массивами требует от профессионального разработчика эффективногорешения ряда задач: организации циклов, возможно многократно вложенных, кодирования индексных выражений и четкого понимания, как именно данные размещены в памяти.