Учитывая этот код: Tiny C Compiler: "ошибка: неизвестный код операции" СПМ"
int main(void)
{
__asm volatile ("jmp %eax");
return 0;
}
32-битный TCC пожалуется с:
test.c:3: error: unknown opcode 'jmp'
но 64-битным версия будет компилироваться просто отлично.
Какая уловка?
Ну, я нашел решение при написании вопроса. Воодушевленный сообщением this на Meta SO, я спрошу его в любом случае и предоставил решение в ответ. Не стесняйтесь предлагать лучшую.
Летучий код ??? –
@ Мартин Джеймс: Из [здесь] (http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html#ss5.4): «Если наша инструкция сборки должна выполняться там, где мы ее помещаем , (т. е. не следует выходить из цикла в качестве оптимизации), поместите ключевое слово 'volatile' после asm и перед(). – hauzer