Используя соглашение о вызовах __fastcall, вы можете запросить параметры, передаваемые в регистрах. Это должно сделать даже ваши пролог функции (push ebp и т. Д.) И эпилог (оставить) избыточными, если только вы не создадите основанные на стеке переменные для использования позже.
Visual C ++ имеет одну реализацию __fastcall, но GCC также обрабатывает ее. См. этот документ для получения информации о соглашении о вызовах.
Только примечание - если назначение запрашивает у вас использование стекового фрейма, вам нужно будет использовать соглашения о вызовах __cdecl или __stdcall, чтобы получить параметры для расчета GCD из.