Являются ли ARM инструкциями SWI и SVC точно так же?
Сборка ARM имеет инструкции SWI и SVC для входа в "режим супервизора".
Что меня смущает, так это почему их два? Здесь говорится, что SVC раньше был SWI. Значит ли это, что в основном они изменили мнемонику? Это одно и то же? Могу ли я использовать их взаимозаменяемо? Один из них существует до архитектуры, а другой после?
Ответы
Ответ 1
Да, SWI и SVC - это то же самое, это просто изменение имени. Ранее команда SVC называлась SWI, программным прерыванием.
Код операции для SVC (и SWI) частично определен пользователем (бит 0-23 определяется пользователем и как параметр для обработчика SVC). Биты 24-27 - это b1111, и эти 4 бита делают CPU понятным, что код операции - SVC (или SWI).
Подробнее см. Информационный центр ARM.
Ответ 2
Существует хорошая мнемоническая таблица UAL против pre UAL в ARMv8 Приложение K6 "Устаревший синтаксис инструкций для наборов инструкций AArch32"
Одна из записей этой таблицы:
Pre-UAL syntax UAL equivalent
SWI SVC
который явно заявляет, что они эквивалентны.
В GNU GAS вы можете выбрать синтаксис UAL с .syntax unified
.