Можно заполнить соответствующие регистры виртуальной машины на основе списка аргументов и некоторой логики, используя 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 ++ ⇐ C++
Программы на C++. Форум разработчиков
1739051321
Anonymous
Можно заполнить соответствующие регистры виртуальной машины на основе списка аргументов и некоторой логики, используя C ++ 17 -раз /master/lib/libriscv/machine_vmcall.hpp#l35
https://github.com/fwsgonzo/libriscv/blob/master/lib/libriscv/machine_vmcall.hpp#l18
Структы будут выдвинуты в стек, а адрес займет слот целочисленного регистра. Итак, я могу превратить регулярный вызов функции в вызов в мою виртуальную машину. Я не думаю, что любой другой язык программирования может сделать это. Они выглядят следующими:
https://github.com/fwsgonzo/libriscv/blob/master/emulator/src/syscalls.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>
Число и типы аргументов известны заранее. Значения не известны до тех пор, пока они не будут извлечены из регистров машины.
Подробнее здесь: [url]https://stackoverflow.com/questions/61076679/c-iterate-template-parameters[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия