Регістри стану і управління в m-профілі, osdev wiki, fandom powered by wikia
Загальні відомості Правити
Системна архітектура процесорів M-профілю кардинально відрізняється від такої в профілях A і R. Зокрема, формат регістрів стану програми (PSR) у всіх трьох профілях збігається лише в частині, доступною непривілейованих коду.
Регістри стану Правити
Документація фірми ARM ділить єдиний реєстр стану на три частини: регістр стану програми APSR (Application Program Status Register), регістр стану переривання IPSR (Interrupt Program Status Register) і регістр стану виконання програми EPSR (Execution Program Status Register). Їх формат для архітектури ARMv7-M наведено на малюнку нижче. Ті ж регістри для версії ARMv6-M мають дещо спрощений формат, про що буде сказано у відповідних місцях опису.
Формат регістрів стану для M-профілю
Регістр APSR містить біти, які можуть явно змінюватися непривілейованими програмами за допомогою команди MSR. а також зчитуватися командою MRS. Призначення цих розрядів буде описано нижче. У версії ARMv6-M є лише чотири прапори умов N, Z, V і C; інші біти цього регістра відсутні.
Регістр IPSR складається з єдиного поля, що займає розряди 8-0 в версії ARMv7-M і 5-0 в версії ARMv6-M. У режимі потоку там завжди знаходиться нуль, а в режимі обробника - номер (вектор) поточного оброблюваного виключення. Привілейований код може прочитати значення цього поля командою MRS. проте запис в нього ігнорується.
Регістр EPSR включає біт T і поле ICI / IT, розділене на дві частини. При зчитуванні інструкцією MRS всі ці біти будуть мати нульове значення, а спроба запису в них ігнорується.
Біт T відображає поточну використовувану систему команд і в процесорах M-профілю завжди має дорівнювати одиниці, оскільки вони підтримують тільки набір Thumb / Thumb-2 (якщо він дорівнює нулю, спроба виконання першої ж команди після його скидання призведе до виникнення виключення).
Поле ICI / IT, наявне тільки у версії ARMv7-M, призначене для зберігання стану виконання умовного блоку інструкцій, починаємо командою IT. або стану виконання перериваються інструкцій груповий завантаження або збереження регістрів LDM і STM. У разі виникнення виключення збережене в стеку значення цього поля використовується для продовження виконання умовного блоку або переривається інструкції після повернення з обробника виключення. При використанні поля ICI / IT для зберігання стану умовного блоку використовуються все його розряди; їх призначення наведено в описі інструкції IT. Якщо ж це поле використовується при виконанні переривається інструкції, біти EPSR 26:25 і 11:10 будуть дорівнюють нулю, а в бітах 15:12 буде перебувати номер регістра, що зберігається або завантажується наступним. Якщо переривається команда використовується всередині умовного блоку, поле ICI / IT зберігає інформацію, що відноситься до умовного блоку; в цьому випадку при поверненні з обробника виключення переривалася команда буде повторена з самого початку.
Ще один, дев'ятий біт регістра EPSR вважається зарезервованим, однак при збереженні регістра стану в стеці під час входу в обробник виключення він встановлюється, якщо покажчик стека (SP) був додатково зменшений на 4 для забезпечення вирівнювання на кордон подвійного слова, і скидається, якщо додаткове зменшення SP не виконувалося.
За допомогою команд MSR і MRS можливий доступ відразу до двох або всіх трьох цих регістрів. Це пояснюється тим, що фізично є лише один загальний регістр стану, а APSR, IPSR і EPSR є лише його уявленнями «в зовнішньому світі». Щоб вказати, до яких саме регістрів потрібен доступ, використовуються позначення IAPSR, EAPSR, IEPSR і XPSR (останнє означає одночасне звернення до всіх трьох регістрів).
Зміни в регістрі стану, внесені за допомогою інструкції MSR. вступають в силу негайно по її завершенні.
Прапори умов Правити
Біти N, Z, C і V носять спільну назву прапорів умов або просто прапорів. Вони характеризують результат виконання тієї чи іншої операції і можуть використовуватися для організації переходів і умовного виконання команд.
Прапори умов змінюються командами обробки даних в S-формі, відображаючи отриманий в них результат. Загальні правила їх модифікації наведені в таблиці; всі виключення і уточнення даються в описах команд.