Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Новые рефераты » Особливості програмування мовою Assembler

Реферат Особливості програмування мовою Assembler





tify"> Використання 64-х розрядних регістрів дозволяє на одиницю часу передавати набагато більше інформації. Якщо, у разі 32-х розрядної архітектури, ми можемо передати 32 біта інформації за раз (максимальне число 4294967296), то у випадку 64-х розрядної архітектури ми можемо передати максимальне значення, рівне 18446744073709551616.

Лістинг 1. Передача даних у 64-х розрядної системі.


//Передача в регістр одного числа% rbx,% rax


Лістинг 2. Передача даних в 32-х розрядної системі.


//Передача в регістр одного числа% ebx,% eax


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

Лістинг 3. Передача кількох даних в одному регістрі (64-х розрядна система).


//Передача в регістр трьох чисел

movl% ecx,% eax

shlq $ 32,% rax% dx% ax $ 16,% eax% bx,% ax


Лістинг 4. Передача кількох даних в одному регістрі (32-х розрядна система).


//Передача в регістр трьох чисел% cx,% ax

5shll $ 16,% eax% dl,% al $ 8,% ax

movb% bl,% al


Можна помітити, що, незважаючи на те, що в обох прикладах було передано три числа в одному регістрі, у разі використання 64-х розрядної архітектури дані числа мають велику розрядність, ніж при використанні 32-х розрядної архітектури.


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


З введенням 64-х розрядної архітектури був змінений спосіб передачі параметрів у функції. Якщо, у разі 32-х розрядної архітектури, параметри можна було передавати або через стек, або через регістри, то при використанні 64-х розрядної архітектури перші чотири параметра (параметри повинні бути цілочисельними, покажчик на клас (об'єктно-орієнтоване програмування) вважається цілим числом і завжди міститься в регістр RCX) передаються через регістри RCX, RDX, R8, R9, а решта через стек.

Лістинг 5. Передача параметрів у функцію в 64-х розрядної системі.


//Виклик функції з п'ятьма аргументамі5, dword ptr [% rsp + 0x20]//Передаємо п'ятий аргумент через стек4,% r9//Передаємо четвертий аргумент3,% r8//Передаємо третій аргумент2% rdx// Передаємо другий аргумент1,% rax//Передаємо перший аргументfunc//Викликаємо функцію:

//...

//Код функції ...

//...

addq 0x20,% rsp//Очищаємо стек

ret//Повертаємо управління


Лістинг 6. Передача параметрів у функцію в 32-х розрядної системі.


//Виклик функції з п'ятьма аргументамі5

pushl 4321func

func:

//...

//Код функції ...

Ret


Робота зі стеком


У 64-розрядної архітектури один елемент стека є 64-розрядним і менше значення туди покласти не можна. Стек вирівнюється по межі в 16 Б, а не 8 Б у разі 32-розрядної архітектури. Всі інші параметри роботи зі стеком залишаються колишніми, крім того, що в 64-х розрядної архітектури найчастіше застосовується парадигма «резервування простору і повторне використання його», і саме через це викликається функція не займається чищенням стека. Цим повинен займатися викликає. При виклику функції обов'язково повинні зберігатися всі регістри, крім RAX, RCX, RDX, R8, R9, R10 і R11.


Адресація

програмування процесор архітектура адресація

Зміна архітектури ніяк не вплинула на зміну способу адресації всередині програми. Адресація в 64-х розрядної системі будується за тим же принципом, як і в 32-х розрядної, і команда звернення до адресою займає однакову кількість байт і тактів.

Лістинг 7. Адресація в 64-х розрядної системі.


//Завантаження опкода наступній машинної команди [% rip],% al

//Абсолютна адресація

xorq% r9,% r9

decb byte ptr (% r9 + $ 777h)


Лістинг 8. Адресація в 32-х розрядної системі.


//Завантаження опкода наступній машинної команди $ + 5

popl% ebx $ 6,% ebx (% ebx),% al

nop


Назад | сторінка 2 з 4 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Використання архітектури клієнт-сервер в системі 1С: Підприємство
  • Реферат на тему: Лістинг в системі біржової торгівлі, котирування цінних паперів і біржові і ...
  • Реферат на тему: Передача звуку через стінки каналу
  • Реферат на тему: Безоплатна передача і передача в безоплатне користування майна
  • Реферат на тему: Передача імпульсного сигналу через Полосковим лінію