#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"); }
Комментариев нет:
Отправить комментарий