Я завершаю реализацию ВМ (часть АЛУ) добавлением операций в Сопроцессор. В этом смысле я ищу дизайн C++.
С помощью шаблона виртуальная машина создается двумя способами: первый, при котором манипуляции с памятью являются прямыми (uint8_t*). Контролируемая секунда (MemoryProtect)
uint8_t mem[3] = {11,22,33};
VM vmr(mem);
VM vmp(mem);
После создания экземпляра виртуальная машина манипулирует своей памятью с помощью функций, не являющихся членами, таких как:
template inline T readPointer(uint8_t *mem) { return *reinterpret_cast(mem); }
template inline T readPointer(const ByteRef &b)
MemoryProtect использует ByteRef. Но я не хочу подробно описывать эту часть.
Мой вопрос: как заставить класс Copro манипулировать памятью виртуальной машины, не зная ее типа и не выполняя приведение или вызов виртуального метода в функции exec Copro? Функция exec — это функция с очень горячим циклом. Итак, это сильное ограничение. В идеале хотелось бы сделать так, чтобы весь этот бардак расширялся пользователями. Поэтому априори исключите любое решение по разрешению во время компиляции.
Я не в восторге от того, чтобы сделать Copro шаблонным классом. Может быть, я слишком многого прошу?
Вот исходный код, который я добровольно упростил. Спасибо.
#include
#include
class MemoryProtect {
public:
uint8_t *m_a;
};
void read(const uint8_t* c, const uint8_t offset) { std::cout
Подробнее здесь: https://stackoverflow.com/questions/797 ... efficientl
Шаблон проектирования C++ для эффективного соединения шаблонных и нешаблонных классов. ⇐ C++
Программы на C++. Форум разработчиков
1760993094
Anonymous
Я завершаю реализацию ВМ (часть АЛУ) добавлением операций в Сопроцессор. В этом смысле я ищу дизайн C++.
С помощью шаблона виртуальная машина создается двумя способами: первый, при котором манипуляции с памятью являются прямыми (uint8_t*). Контролируемая секунда (MemoryProtect)
uint8_t mem[3] = {11,22,33};
VM vmr(mem);
VM vmp(mem);
После создания экземпляра виртуальная машина манипулирует своей памятью с помощью функций, не являющихся членами, таких как:
template inline T readPointer(uint8_t *mem) { return *reinterpret_cast(mem); }
template inline T readPointer(const ByteRef &b)
MemoryProtect использует ByteRef. Но я не хочу подробно описывать эту часть.
Мой вопрос: как заставить класс Copro манипулировать памятью виртуальной машины, не зная ее типа и не выполняя приведение или вызов виртуального метода в функции exec Copro? Функция exec — это [b]функция с очень горячим циклом[/b]. Итак, это [b]сильное[/b] [b]ограничение[/b]. В идеале хотелось бы сделать так, чтобы весь этот бардак расширялся пользователями. Поэтому априори исключите любое решение по разрешению во время компиляции.
Я не в восторге от того, чтобы сделать Copro шаблонным классом. Может быть, я слишком многого прошу?
Вот исходный код, который я добровольно упростил. Спасибо.
#include
#include
class MemoryProtect {
public:
uint8_t *m_a;
};
void read(const uint8_t* c, const uint8_t offset) { std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79794410/c-design-pattern-for-connecting-templated-and-non-templated-classes-efficientl[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия