Ім'я файлу: Павло Юрійович Бартманський - Л.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 використовуються такі коди. |