Дали ARM инструкциите SWI и SVC са едно и също нещо?

ARM модулът има SWI и SVC инструкции за влизане в „режим на надзорник“.

Това, което ме обърква, е защо са две? Тук се казва, че SVC е бил преди SWI. Това означава ли, че основно са променили мнемониката? Едно и също нещо ли са? Мога ли да ги използвам взаимозаменяемо? Едно от тях съществува ли преди архитектура, а друго след?


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


Отговори (2)


Да, SWI и SVC са едно и също нещо, това е просто промяна на името. Преди това инструкцията SVC се наричаше SWI, софтуерно прекъсване.

Операционният код за SVC (и SWI) е частично дефиниран от потребителя (битове 0-23 са дефинирани от потребителя и са като параметър към манипулатора на SVC). Битове 24-27 са b1111 и тези 4 бита карат процесора да разбере, че кодът на операцията е SVC (или SWI). вижте ARM Информационен център за повече информация.

person Kamyar Souri    schedule 10.12.2011

Има добра мнемонична таблица UAL срещу pre-UAL в ARMv8 Приложение 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 срещу pre-UAL също има допълнителни последици освен имената на определени инструкции, напр. изискването за # или не в определени целочислени литерали: Необходим ли е хешът за незабавни стойности в асемблирането на ARM?

person Ciro Santilli    schedule 07.01.2019
comment
и можете просто да погледнете документацията, за да видите самата инструкция. - person old_timer; 24.04.2019