Хотел написать макрос позволяющий вызывать функции, вот так:
invoke FunctionName, param1, param2, ...
Но сталкнулся с проблемой - у каждой функции разное количество параметров, а значит вызовы выглядят по разному. Перегрузить макрос по количеству параметров не получилось. Пробовал использовать .ifdef чтобы определять передан параметр или нет - не вышло. Остановился на таком варианте - после invoke писать количество параметров. В результате написал несколько макросов для разного количества параметров:
.macro invoke1 function, par1 push \par1 call \function add $4, %esp .endm
.macro invoke2 function, par1, par2 sub $8, %esp movl \par2, 4(%esp) movl \par1, (%esp) call \function add $8, %esp .endm
и т.д. В принципе короче чем каждый раз полностью писать вызов, но чиселки после invoke не очень красиво смотряться. Есть идеи как такое провернуть без написания отдельного макроса для каждого числа параметров?