Подтвердить что ты не робот

Являются ли ARM инструкциями SWI и SVC точно так же?

Сборка ARM имеет инструкции SWI и SVC для входа в "режим супервизора".

Что меня смущает, так это почему их два? Здесь говорится, что SVC раньше был SWI. Значит ли это, что в основном они изменили мнемонику? Это одно и то же? Могу ли я использовать их взаимозаменяемо? Один из них существует до архитектуры, а другой после?

4b9b3361

Ответ 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.