Ім'я файлу: Павло Юрійович Бартманський - Л.1.8.docx
Розширення: docx
Розмір: 360кб.
Дата: 16.05.2022
скачати

Міністерство освіти і науки України

Національний Авіаційний Університет

Факультет кібербезпеки, комп’ютерної та програмної інженерії

Кафедра комп’ютеризованих систем управління

Лабораторна робота № 8

З предмету: Системне Програмування

Виконав:

Студент групи КС-231Б

Бартманський П.Ю.

Перевірив:

Гармай В.М.

Київ 2022

Час виконання: 22:58:09.05

Тема: Використання асемблерних вставок в мовах високого рівня

Мета: вивчення методів використання асемблерних вставок в мовах високого рівня
Завдання до лабораторної роботи: Вставити код, що було розроблено у лабораторній роботі 3.7, в мову високого рівня.
Код програми:

#include

#include

int main(void)

{

HANDLE hFile1;

FILETIME ftCreate;

SYSTEMTIME stUTC, stLocal;

hFile1 = CreateFile(L"C:/Users/Pavlik/sp_8/sp_8_test.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hFile1 == INVALID_HANDLE_VALUE)

{

printf("Could not open file, error %ul\n", GetLastError());

return -1;

}

if (!GetFileTime(hFile1, &ftCreate, NULL, NULL))

{

printf("Something wrong!\n");

return FALSE;

}

FileTimeToSystemTime(&ftCreate, &stUTC);

printf("UTC System Time format:\n");

printf("Created on: %02d/%02d/%d %02d:%02d\n", stUTC.wDay, stUTC.wMonth, stUTC.wYear, stUTC.wHour, stUTC.wMinute);

printf("Bartmanskiy Pavlo, 15.05.2022, 16:30");

return 0;

}
Скріншот з виконанням програми:

Та скріншот із збереженням файлу:



Висновок: на лабораторній роботі №8 я вивчив методи використання асемблерних вставок в мовах високого рівня

Відповіді на контрольні запитання:

1. Які переваги асемблерних вставок?

Оптимізація, доступ до специфічних інструкціям процесора, системні виклики.

2. Які недоліки асемблерних вставок?

Основний недолік асемблерних вставок випливає з визначення, на яке я просив звернути увагу на початку - у тексті вставки не можна використовувати макроси препроцесора, у тому числі і імена портів, регістрів, бітів і таке інше.

3. Які компілятори не підтримують асемблерні вставки?

Одна з проблем, що виникаєь в Visual Studio повна відсутність підтримки inline- асемблера. У таких випадках є 3 очевидних рішення:

1) переписати необхідний функціонал на мові C++,

2) винести його в окрему DLL,

3) винести його в окремий модуль з подальшою компоновкою.

4. Як обійти обмеження компіляторів на використання асемблерних вставок?

Обмеження типу дозволяє в коді асемблерної вставки використовувати операнди згідно з допустимими форматами команд. Якщо потрібно, щоб операнд був розміщений у пам'яті, замість символу r слід використовувати символ m. У деяких випадках потрібно не лише переслати значення змінної на регістр, а й забезпечити, щоб це був конкретний регістр загального призначення. У цьому випадку замість символу r використовуються такі коди.
скачати

© Усі права захищені
написати до нас