Может ли кто-нибудь предоставить пример использования fastcall для использования с gcc? Если возможно, вы можете предоставить эквивалентный вызов без использования fastcall и объяснить, как они будут отличаться?Fastcall GCC пример
9
A
ответ
17
Там нет никакой разницы в том, как данный вызов функции появится в коде C. Единственное различие заключается в объявлении функции. GCC manual имеет более подробную информацию.
$ cat fastcall.c
extern void foo1(int x, int y, int z, int a) __attribute__((fastcall));
extern void foo2(int x, int y, int z, int a);
void bar1()
{
foo1(99, 100, 101, 102);
}
void bar2()
{
foo2(89, 90, 91, 92);
}
$ gcc -m32 -O3 -S fastcall.c -o -
.
.
bar1:
.
.
movl $100, %edx
movl $99, %ecx
movl $102, 4(%esp)
movl $101, (%esp)
call foo1
.
.
bar2:
.
.
movl $92, 12(%esp)
movl $91, 8(%esp)
movl $90, 4(%esp)
movl $89, (%esp)
call foo2
2
Смежные вопросы
- 1. Можно ли убедить GCC подражать соглашению о вызове fastcall?
- 2. Параметры отправки отправки - fastcall
- 3. Пример файла makefile для gcc
- 4. Является ли fastcall действительно быстрее?
- 5. Странная ошибка компиляции GCC (простой пример включен)
- 6. Безопасно ли использовать fastcall в общей библиотеке?
- 7. C++ typedef с параметрами и fastcall
- 8. Поддерживает ли GCC оптимизацию вызовов?
- 9. Проверка векторизации на простой пример с gcc-4.9
- 10. Невозможно построить пример sigqueue с gcc, но g ++ в порядке?
- 11. Повреждение памяти при построении (сомнительный) пример с Clang вместо GCC
- 12. Нужно ли сохранять RCX для функций листа X64 Fastcall?
- 13. Может ли функция быть fastcall & inline в ядре linux?
- 14. Какое ключевое слово fastcall используется для визуального c?
- 15. Какой-либо реальный прецедент для использования вызывающего соглашения fastcall?
- 16. MakeFile Пример
- 17. Плагины GCC, плагины GCC Melt или gcc Python для написания расширения gcc
- 18. Почему MS fastcall на x86 не использует EAX для первого аргумента?
- 19. Пример компиляторы
- 20. Что стоит больше, вычисляемый goto/jump vs fastcall через указатель функции?
- 21. GCC: маскировка между версиями GCC
- 22. Пример PETSc не работает
- 23. Сводный пример wordcount пример
- 24. Как скомпилировать пример mruby?
- 25. Пользовательский препроцессор gcc
- 26. Пример оценочного примера
- 27. Что делает «gcc -xW»?
- 28. gcc 6.1.0 ошибка сегментации - ошибка gcc?
- 29. Как сменить python gcc на gcc 4.8?
- 30. Все версии gcc поддерживают опцию gcc gfile?
Нужно ли показывать очистку после вызова, чтобы подчеркнуть разницу? +1 для руководства x-ref. –