Каким образом задать функцию без пролога и эпилога так, чтобы создавался только код тела?
Например, чтобы функция
void func() {
__asm__ volatile__ ("nop");
}
компилировалась в код
0: 90 nop
вместо кода
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 90 nop
4: 5d pop %ebp
5: c3 ret
Есть ли стандартные средства C (visual c, gcc) ?
Ответ
В стандарте C нет такой возможности. Она может предоставляться конкретными компиляторами. Например, для Visual C++ на платформе x86 это будет выглядеть так:
__declspec( naked ) void func( void ) { __asm { nop } }
Для ARM gcc:
void func() __attribute__ ((naked));
void func(void) {
__asm__ __volatile__("nop");
}
Комментариев нет:
Отправить комментарий