Добавил:
ИВТ (советую зайти в "Несортированное") Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
0
Добавлен:
23.11.2024
Размер:
405 Кб
Скачать

МИЭТ, СПИНТех, КАИ

Ассемблерные вставки в программу на языке

1 / 15

Ассемблерные вставки в программу на языке высокого уровня

Александра Игоревна Кононова

МИЭТ

24 октября 2021 г. актуальную версию можно найти на https://gitlab.com/illinc/arch-cs

Выход, вход, clobbers, метки

Вставки и функции

asm goto

Синтаксис

Практическое использование

Размещение параметров

Условные команды

 

 

МИЭТ, СПИНТех, КАИ

Ассемблерные вставки в программу на языке

2 / 15

Вставки и функции

 

 

1

Вставка фрагмент функции, написанный на ассемблере:

 

 

кроссплатформенность;

 

 

 

реализация на ассемблере только необходимых команд.

 

2

Вставка не функция:

 

 

указатель команды ip не меняется скачком при входе/выходе; нет команд вызова и возврата; нет пролога/эпилога;

нет передачи параметров через фиксированные места.

3 Описание функции во вставке =) неопределённое поведение!

4Вставка использует регистры, изменяемые по соглашению функцией (A; C; D везде, остальные различаются):

r-параметры (выходные и входные);

явно или неявно в коде (указать в перезаписываемых элементах); не должна менять неприкосновенные (их надо сохранять/восстанавливать вручную, если что).

Выход, вход, clobbers, метки

Вставки и функции

asm goto

Синтаксис

Практическое использование

Размещение параметров

Условные команды

 

МИЭТ, СПИНТех, КАИ

Ассемблерные вставки в программу на языке

3 / 15

Синтаксис

 

 

 

Стандарт C++: asm ( string-literal );

asm("movl %ecx, %eax");

GCC asm = __asm__, расширенный синтаксис:

 

 

asm [volatile] (

 

 

 

"команды и директивы ассемблера"

 

 

"как последовательная текстовая строка"

 

 

: [<выходные параметры>] : [<входные параметры>] : [<перезаписываемые элементы>] );

asm [volatile] goto (

"команды и директивы ассемблера"

"как последовательная текстовая строка"

:: <входные параметры> : <перезаписываемые элементы> : <метки> );

Количество параметров output + input + goto 6 30, сквозная №-ция с 0

Выход, вход, clobbers, метки

Вставки и функции

asm goto

Синтаксис

Практическое использование

Размещение параметров

Условные команды

 

МИЭТ, СПИНТех, КАИ

Ассемблерные вставки в программу на языке

4 / 15

Размещение параметров

Любое выражение ЯВУ в каждый момент времени хранится в памяти, регистре или вычисляется ¾на лету¿ компилятором =) параметры вставки:

либо копируются (в регистр):

1в регистре (r и др.) копирование в/из регистр, кроме перезаписываемых (clobbers):

reg 2 fA; C; D; : : :g n clobbers n прочие параметры того же вида

либо получают псевдонимы (тестовая подстановка):

2непосредственное значение (i и др.) подстановка выражения как непосредственного операнда;

3 память (m) подстановка выражения как операнда в памяти.

Размещение одного из видов по выбору компилятора (строка из нескольких ограничений rm, rmi или g).

Выход, вход, clobbers, метки

Вставки и функции

asm goto

Синтаксис

Практическое использование

Размещение параметров

Условные команды

 

Соседние файлы в папке АВС