встроенный asm с gcc - PullRequest
       27

встроенный asm с gcc

2 голосов
/ 12 января 2012

У меня есть эта часть кода, которая компилировалась с использованием ARMASM:

/* Software Interrupt */
/* we must save lr in case it is called from SVC mode */
#define ngARMSwi( code)   __asm { SWI code,{},{},{lr} }

пример использования: ngARMSwi (0x23);

Я пытаюсь преобразовать это для компиляции, используя gcc (исходный код GCC-4.6.2 eabi). Я нашел эту ссылку http://www.ethernut.de/en/documents/arm-inline-asm.html, но не могу найти способ правильно скомпилировать эту строку.

моя лучшая попытка

#define ngARMSwi( code)  __asm__ ("SWI " (code) : : :"lr" )

но я получаю ошибку компиляции:

error: expected ':' or ')' before '(' token

Любая помощь приветствуется!

1 Ответ

1 голос
/ 12 января 2012

Возможно, вы хотите

#define ngARMSwi(code) __asm__("SWI %0" : : "I"(code) : "lr")

Обратите внимание, что code является вводом для инструкции, поэтому она идет в третьем разделе.Его место в инстукции помечено %0 в строке.I - это ограничение на code, указывающее, что это должна быть 8-битная константа.

...