Симулятор набору команд: відмінності між версіями

[неперевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Скасування редагування № 17842912 користувача 159.224.28.181 (обговорення)
правопис, стиль
Рядок 1:
'''[[симуляція|Симулятор]] набору команд''' (СНК) є імітаційною моделлю, як правило, кодується в [[мова програмування високого рівня|мові програмування високого рівня]], яка імітує поведінку мейнфреймів або [[мікропроцесор]]ів з «читання» команд і підтримки внутрішніх змінних, які представляють [[регістр процесора|регістри процесора]].
 
'''Команда [[моделювання]]''' являє собою методологію, яка використовуєтьсяможе для однієївикористовуватись з декількох можливих причин:
* Для імітації [[машинний код|машинних кодів]] іншого пристрою або всього [[комп'ютер]]а, для перевірки сумісності симулятора {{Нп|Симулятор комп'ютерної архітектури|системасистеми|en|Computer architecture simulator}} зазвичай включає в себе симулятор набору команд.
:: Наприклад, {{Нп|IBM 1401|IBM 1401|en|IBM 1401}} моделювали на пізній версії [[IBM System/360|IBM / 360]] за допомогою використання [[Емуляція|емуляції]] [[Мікрокод|мікрокода]].
* Для моніторингу та виконання команди машинного коду (розглядаємогоякий опрацьовується як вхідний потік) на тому ж обладнанні для випробувань і налагодження[[зневадження]], наприклад, із [[Захист пам'яті|захистом пам'яті]] (який захищає від випадкового або навмисного [[переповнення буфера]]).
* Для підвищення швидкості продуктивності в порівнянні з більш повільним циклом точних симуляцій за участю процесорного ядра, де сам процесор не перевіряється ні одним з елементів; в [[Мови опису апаратури|мові опису апаратури]] за допомогою [[Verilog]], де моделювання відбувається за допомогою інструментів, таких як СНК, можна працювати швидше за допомогою «[[verilog#Program Language Interface .28PLI.29|PLI]]» (не плутати з {{Нп|ПЛ/1|ПЛ/1|en|PL/I}}, яка є [[Мова програмування|мовою програмування]]).
 
== Реалізація ==
 
СНК часто забезпечені [[зневаджувач|налагоджувачем]]ем для того, щоб [[інженер-програміст]] / [[програміст]] мав можливість налагоджувати програму до отримання цільового устаткування. [[GNU Debugger|GDB]] є одним з [[відладчик]]ів, який був складений в СНК. Це іноді інтегрований відладчик з імітацією периферійних схем, таких як [[таймер]]и, [[переривання]], [[Послідовний порт|послідовні порти]], загальні порти {{Нп|Порт введення / виводу|введення / виводу|en|Memory-mapped I/O}} та ін., потрібні, щоб імітувати поведінку [[мікроконтролер]]а.
 
Основний метод моделювання команди той самий, незалежно від мети: спочатку треба виконувати програму моніторингу, що проходить через ім'я цільової програми в якості додаткового вхідного параметра.
Цільова програма потім завантажується в пам'ять, але контроль ніколи не передається в самому коді. Замість цього, {{Нп|Точкаточка входу|точка входу|en|Entry point}} розраховується в завантаженні програми, і [[Program status word|опис стану псевдо-програми]] (PSW) встановлюється на цьому місці. Набір псевдо-[[регістр процесора|регістрів]] встановлюються там, де вони могли міститися би, якщо програма отримала доступ безпосередньо до управління.
 
Іноді, необхідно внести зміни в деякі з них, щоб вказати на інші псевдо «блоки контролю», залежно від апаратної і операційної системи. Така необхідність може з'явитися, щоб скинути раніше доданий початковий список параметрів для «видалення», як параметр ім'я програми.
Рядок 21:
# Визначається довжина команди в псевдо PSW місці (спочатку першої команди в коді цільової програми). Якщо ця команда відведення в програмі відповідає набору раніше виданих «паузних» точок, перейдіть до 7 пункту.
# «Отримуйте» команду з вихідного місця розташування (при необхідності) в пам'ять монітора. Якщо є «мікроелементи», треба зберегти назву програми, інструкцію зміщення і будь-які інші значення.
# Залежно від типу команди, потрібно виконувати перевірку попередньо виконуючих компонентів і, якщо є необхідність, виконувати їх. Якщо команда не може діяти з будь-якої причини (невірна команда, не виконуючий режим, тощо) перейдіть до 7 пункту. Якщо команда збирається змінити пам'ять, перевірте, чи існує призначення пам'яті і наскільки воно велике. Якщо все гаразд, та навантаження є доцільним для псевдо-регістрів так, як і для тимчасових реальних регістрів, виконайте еквівалентну дію з реальними регістрами, збережіть адресу і довжину зміненого формата, якщо є мікроелементи, здійсніть перехід до 4 пункту. Якщо ви маєте команду виду «регістр-регістр» для роботи, навантаження псевдо-регістрів яких зберігається в моніторах реальних регістрів, необхідна операція для зворотнього зберігання в відповідних псевдо-регістрах, тож знову перейдіть до 4 пункту. Якщо команда є умовним переходом, визначте, чи є умова: дія виконана без пункту 4, здійснено розрахування відведення за адресою, визначено дію (якщо ні, встановіть помилку типу = «{{Нп|Wild branch|Wild branch|en|Wild branch}}»), треба перейти до 7 пункту. Якщо все гаразд, перейдіть до 5. Якщо команда викликає операційну систему, зробити реальний виклик, який визначить за допомогою «фейкових» звертань, чи повернувся контроль програми, а потім скинути псевдо-регістри для відображення виклику; перейдіть до 4 пункту.
# Додати довжину команди до поточного значення псевдо PSW.
# Зберегти наступну адресу в Псевдо PSW.
Рядок 29:
Для тестів і налагодження, програма моніторингу може надавати засоби для перегляду і змінення регістрів, пам'яті, також має можливість отримати {{Нп|Дамп пам'яті|міні-дамп|ru|Дамп памяти}}, зберігати поточні імена програм з їх значеннями. Це дозволяє видалити непотрібні «паузи», тощо.
 
Команда моделювання допомогаєдопомагає виявити помилки до виконання, що означає, умови як і раніше були, але виявлені помилки знищені. Дуже хороший приклад — [[IBM]] [[IBM System/360|S / 360]], де є наступна послідовність команд, що може викликати труднощі налагодження без їх моделювання.
 
LM R14,R12,12(R13) where r13 incorrectly points to string of X"00"s
Рядок 51:
'''Незаконні операції:''' деякі операційні системи (або апаратні засоби) вимагають прикладну програму, щоб підтримувати правильний режим деяких викликів в операційній системі. Команда моделювання може виявити ці умови до виконання.
 
Завдяки '''гарячій точці аналізу і використанню команд''' шляхом їх підрахунку, які беручтьберуть участь у процесі моделювання (що відповідатиме числу виконаних команд згідно даних фактичного процесора або неконтрольованого виконання), імітатор може забезпечити як міру відносної ефективності між різними версіями алгоритму, так і використовуватися для виявлення «гарячих точок», де {{Нп|Оптимізація (програмування)|оптимізація|en|Program optimization}} може бути цільовою задачею. У цій ролі він може розглядатися як [[Профілювання (програмування)|профілювання]], тому що отримати ці статистичні дані при нормальному виконанні не легко, і це визначається перш за все для програм на мові високого рівня, які ефективно «маскують» рівень команд машинного коду у своєму середовищі.
 
== Освітні цілі ==