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

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

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


person Hayri Uğur Koltuk    schedule 10.12.2011    source источник


Ответы (2)


Да, SWI и SVC - это одно и то же, это просто изменение названия. Ранее инструкция SVC называлась SWI, Software Interrupt.

Код операции для SVC (и SWI) частично определяется пользователем (биты 0-23 определяются пользователем и подобны параметру обработчика SVC). Биты 24-27 - это b1111, и эти 4 бита заставляют ЦП понимать, что код операции - это SVC (или SWI). см. Информационный центр ARM Больше подробностей.

person Kamyar Souri    schedule 10.12.2011

В приложении ARMv8 есть хорошая мнемоническая таблица UAL K6 «Устаревший синтаксис инструкций для наборов инструкций AArch32»

Одна из записей этой таблицы:

Pre-UAL syntax    UAL equivalent
SWI               SVC

который явно заявляет, что они эквивалентны.

В GNU GAS вы можете выбрать синтаксис UAL с помощью .syntax unified.

В GCC вы можете использовать параметр -masm-syntax-unified для встроенной сборки, хотя он не работал в версии 8.2.0 из-за исправленной на тот момент ошибки: Как написать встроенную сборку .syntax unified UAL ARMv7 в GCC?

UAL vs pre-UAL также имеет дополнительные значения помимо названий определенных инструкций, например требование наличия или отсутствия # в определенных целочисленных литералах: Требуется ли хэш для немедленных значений в сборке ARM?

person Ciro Santilli    schedule 07.01.2019
comment
и вы можете просто посмотреть документацию, чтобы увидеть саму инструкцию. - person old_timer; 24.04.2019