Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчеты по Курсовой Работе / Сравнение 16 и 32 разрядных ассемблеров Елганов А.А. 8-78-3.pdf
Скачиваний:
42
Добавлен:
12.03.2015
Размер:
197.46 Кб
Скачать

Оглавление

 

Введение...................................................................................................................................................

2

Основные отличия архитектур i686 и amd64........................................................................................

3

Общие принципы программирования на языке Assembler для платформ i686 и amd64..................

5

Регистры..............................................................................................................................................

5

Принцип передачи параметров в функции.......................................................................................

6

Работа со стеком.................................................................................................................................

7

Адресация............................................................................................................................................

7

Листинг программы для сравнения архитектур i686 и amd64............................................................

8

Пример работы программы..................................................................................................................

12

Сравнение программ.............................................................................................................................

13

Вывод......................................................................................................................................................

14

Список литературы...............................................................................................................................

15

1

Введение

В нашу жизнь уже давно вошли процессоры с 64-х разрядной архитектурой. Не смотря на то, что все еще активно используются 32-х разрядные процессоры, и что программ для них в разы больше, новая архитектура приобретает все больше поклонников.

64-х разрядные процессоры позволяют использовать больше ресурсов, чем 32-х разрядные, позволяют оперировать с большим количеством данных за единицу времени, что в свою очередь повышает скорость и точность вычислений и т. д. Но в тоже время использование 64-х разрядной архитектуры влечет за собой повышенное потребление оперативной памяти и небольшие проблемы с совместимостью программ, написанных, для 32-х разрядной архитектуры.

Можно предположить, что новая архитектура будет требовать других способов программирования, и это окажется правдой. Например, были изменены регистры, стек, правила передачи аргументов в функции и другое.

Учитывая это, в данной работе мы сравним особенности программирования для 32-х разрядных и 64-разрядных процессоров на языке ассемблера. Для компиляции программ будет применяться операционная система Ubuntu GNU\Linux 12.10, компилятор gcc 4.7.2. Также мы будем придерживаться AT&T нотации языка программирования Assembler.

2

Основные отличия архитектур i686 и amd64

Нововведения в архитектуре 64-х разрядных процессоров позволили значительно увеличить объем используемой памяти для одного ядра процессора (таблица 1).

Таблица 1. Общие ограничения на память

Характеристика

32-разрядные модели

64-х разрядные модели

Виртуальное адресное

4 ГБ

16 ТБ

пространство (один процесс)

 

 

Виртуальное адресное

2 ГБ (3 ГБ, при

 

пространство (32-х разрядный

запуске системы с

4 ГБ

процесс)

ключом /3GB)

 

Виртуальное адресное

 

 

пространство (64-х разрядный

Неприменимо

8 ТБ

процесс)

 

 

Пул подкачиваемой памяти

470 МБ

128 ГБ

(режим ядра)

 

 

Пул неподкачиваемой памяти

156 МБ

128 ГБ

(режим ядра)

 

 

Элемент системной таблицы

660-900 МБ

128 ГБ

страниц

 

 

Также использование 64-х разрядной архитектуры позволяет обращаться к большему количеству регистров большего объема во время работы программы. Если при использовании 32-х разрядного режима мы могли обращаться к восьми 32-х разрядным регистрам общего назначения: EAX, EBX, ECX, EDX, EBP, ESI, EDI, ESP, к восьми 64-х разрядным регистрам для работы медиа данными и с числами с плавающей точкой: MMX0/FPR0, MMX1/FPR1, MMX2/FPR2, MMX3/FPR3, MMX4/FPR4, MMX5/FPR5, MMX6/FPR6, MMX7/FPR7, к флаговому 32-х разрядному регистру EFLAGS и к 32-х разрядному регистру-указателю на следующую инструкцию EIP, то в 64-х разрядном режиме у нас гораздо больше возможностей:

Регистры общего назначения были расширены до 64-х разрядов с сохранением старой структуры и получили названия RAX, RBX, RCX,

3

RDX, RBP, RSI, RDI и RSP;

Были введены новые 64-х разрядные регистры в количестве восьми штук: R8, R9, R10, R11, R12, R13, R14, R15;

Флаговый регистр и регистр-указатель на следующую инструкцию процессора были расширены до 64-х разрядов и получили названия RFLAGS и RIP соответственно;

Было добавлено 16 128-разрядных медиа-регистров под названиями XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14, XMM15.

Из вышесказанного можно сделать вывод о том, что использование 64-х разрядной архитектуры позволит более быстро, качественно и удобно решать поставленные как научные, так и общие задачи.

Стоит заметить, что результаты тестирования программ (см. [4], [5], [6]) на различных платформах показывают, что в большинстве случаев использование 64-х разрядной архитектуры дает прирост производительности, по сравнению с 32-х разрядной архитектурой.

4