#c #ассемблер
Каким образом задать функцию без пролога и эпилога так, чтобы создавался только код тела?
Например, чтобы функция
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) ?
Ответы
Ответ 1
В стандарте C нет такой возможности. Она может предоставляться конкретными компиляторами. Например, для Visual C++ на платформе x86 это будет выглядеть так: __declspec( naked ) void func( void ) { __asm { nop } } Для ARM gcc: void func() __attribute__ ((naked)); void func(void) { __asm__ __volatile__("nop"); }
Комментариев нет:
Отправить комментарий