Я использую компилятор GCC.Я хочу вставить некоторые встроенные инструкции в C. Инструкции без ветвления вставляются успешно с использованием директивы __ asm __ следующим образом:
__asm__ volatile (
"add %[my_out], %[my_op1], %[my_op2]\n"
: [my_out] "=&r" (array[3])
: [my_op1] "r" (array[0]),[my_op2] "r" (array[1])
);
Но я не могу вставить инструкцию перехода / перехода.Компиляция выдает следующую ошибку:
../test.c:5: error: expected '(' before 'goto'
../test.c:5: error: expected identifier or '*' before 'volatile'
Я попробовал следующий код:
unsigned int array[10] = { 0x22, 0x12,0,0,0,0,0,0,0};
int main() {
__asm__ goto volatile (
"jp %l[label]\n"
: /*no output*/
: [my_op1] "r" (array[0]),[my_op2] "r" (array[1])
: /*no cobblers*/
: label
);
return 0;
label:
__asm__ volatile (
"add %[my_out], %[my_op1], %[my_op2]\n"
: [my_out] "=&r" (array[3])
: [my_op1] "r" (array[0]),[my_op2] "r" (array[1])
);
return 0;
}
Можете ли вы помочь исправить этот код?Привет