8.1.3. Смешанные конвенции

В главе 7 мы познакомились с договоренностью о передаче параметров STDCALL, отличавшейся и от С, и от PASCAL-конвенций, которая применяется для всех си­стемных функций Win32 API. Здесь параметры помещаются в стек в обратном по­рядке, как в С, но процедуры должны очищать стек сами, как в PASCAL.

Еще одно интересное отклонение от С-конвенции можно наблюдать в Watcom С. Этот компилятор активно использует регистры для ускорения работы програм­мы, и параметры в функции также передаются по возможности через регистры. Например, при вызове функции с шестью параметрами

some_proc(a,b,c,d,e,f);

первые четыре передаются соответственно в (Е)АХ, (E)DX, (E)BX, (Е)СХ, а с пя­того параметры помещаются в стек в обычном обратном порядке:

е equ [bp+4]

f equ [bp+6]