Вы можете попробовать обернуть параметры в структуру;например, если ваша функция int calc_my_sum(int x, int y) {return x+y;}
, вы можете изменить ее следующим образом (безобразно):
struct my_x_y {
int x, y;
my_x_y(): x(0), y(0) {} // a non-trivial constructor to make the type non-POD
};
int calc_my_sum(my_x_y x_and_y) {
// passing non-POD object by value forces to use the stack
return x_and_y.x + x_and_y.y;
}
В качестве альтернативы, вы можете просто добавить 4 фиктивных параметра, чтобы использовать регистры, чтобы другие параметры использовали стек:
struct force_stack_usage {
int dummy0, dummy1, dummy2, dummy3;
}
int calc_my_sum(force_stack_usage, int x, int y) {
return x + y;
}