Я компилирую 32-битный двоичный файл, но хочу встроить в него 64-битную сборку.
void method() {
asm("...64 bit assembly...");
}
Конечно, когда я компилирую, я получаю ошибки относительно обращения к плохим регистрам, потому что регистры 64 бит.
evil.c:92: Error: bad register name `%rax'
Можно ли добавить некоторые аннотации, поэтому gcc будет обрабатывать разделы asm, используя вместо этого 64-разрядный ассемблер. У меня есть обходное решение, которое компилируется отдельно, карта на странице с PROT_EXEC | PROT_WRITE и копируется в моем коде, но это очень неудобно.