Параметры шаблона итерации C ++C++

Программы на C++. Форум разработчиков
Anonymous
Параметры шаблона итерации C ++

Сообщение Anonymous »

Можно заполнить соответствующие регистры виртуальной машины на основе списка аргументов и некоторой логики, используя C ++ 17 -раз /master/lib/libriscv/machine_vmcall.hpp#l35
https://github.com/fwsgonzo/libriscv/bl ... ll.hpp#l18
Структы будут выдвинуты в стек, а адрес займет слот целочисленного регистра. Итак, я могу превратить регулярный вызов функции в вызов в мою виртуальную машину. Я не думаю, что любой другой язык программирования может сделать это. Они выглядят следующими:
https://github.com/fwsgonzo/libriscv/bl ... ls.cpp#l20
В попытке упростить Обработка системных вызовов Я хочу иметь возможность взять список типов аргументов, выполнить некоторую логику на каждом из них (извлеките значения на основе типа), а затем, необязательно, вызовите лямбду с аргументами, которые я создал. Например: < /p>
template
void simplified_systemcall_handler(machine& machine, std::function callback)
{
parameter_pack p;
int i = 0;
foreach (Arg : ) {
if constexpr (std::is_integral_v) {
p.append(machine.get_syscall_arg (i++));
}
}
callback(p);
}
< /code>
Это, конечно, не будет работать, так как вы не можете создавать пакеты параметров, насколько мне известно, ни параметры шаблона итерации, подобные такими параметрами. Тем не менее, псевдокод рассказывает вам, что я хочу сделать. < /P>
Цель состоит в за раз. Итак, что самое лучшее лучшее? Что -то вроде этого: < /p>
auto list = machine.get_syscall_arguments ();
// process list assuming list[0] is int, list[1] is long
< /code>
Число и типы аргументов известны заранее. Значения не известны до тех пор, пока они не будут извлечены из регистров машины.

Подробнее здесь: https://stackoverflow.com/questions/610 ... parameters

Вернуться в «C++»