У меня следующая проблема: я хочу использовать следующий код ассемблера из моих C исходных файлов, используя встроенный ассемблер:Встроенный ассемблер: Передаёт константа
.word 1
Ближайший я получил использует этот встроенный ассемблер код:
asm(".word %0\n": : "i"(1));
Однако это приводит к следующему коду в созданном файле ассемблера:
.word #1
Так что мне нужен способ передать константу, которая известна во время компиляции, не добавляя перед ней «#». Возможно ли это с помощью встроенного ассемблера?
Edit:
Чтобы сделать его более понятным, почему мне это нужно, это то, как он будет использоваться:
#define LABELS_PUT(b) asm(".word %0\n": : "i"((b)));
int func(void) {
LABELS_PUT(1 + 2);
return 0;
}
Я не могу использовать».word 1" , так как значение будут отличаться при каждом вызове макроса LABELS_PUT.
RTFM. Что случилось с 'asm (". Word 1 \ n ":: :);'? Пожалуйста, прочитайте документацию и/или учебник. – Olaf
Это для ARM? Это что-то, что вы не можете сделать более легко с помощью компилируемого отдельно .s? –
Я отредактировал вопрос, чтобы понять, почему я не могу использовать «.word 1» – lkamp