Является ли std::byte правильным типом данных для аппаратных регистров в эмуляторе?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Является ли std::byte правильным типом данных для аппаратных регистров в эмуляторе?

Сообщение Anonymous »

Я пишу эмулятор очень популярной портативной консоли на современном C++.
Понятно, что для оперативной памяти я хочу использовать std::vector , но я сомневаюсь, что std::byte является правильным типом для всех видов регистров (регистров ЦП, аппаратных регистров и т. д.). В случае с регистрами ЦП это очень неоднозначно, но я явно склонен использовать здесь std::uint8_t (и std::uint16_t), поскольку регистры ЦП в основном используются для арифметических операций. Но есть также своего рода «регистры управления», которые не используются для арифметики, но хранят либо флаги, либо счетчики.
Другое возможное использование std::byte: для хранения текущей инструкции (которая закодирована в один или несколько байтов).
Я также прихожу к несогласованности, потому что std::byte содержит только 8 бит. Но регистры управления также могут быть длиннее 8 бит (например, регистр cr0 архитектуры IA32).
Может быть, я просто заморачиваюсь, но неясно для меня, если это допустимое использование std::byte. Стандарт гласит, что «

Код: Выделить всё

std::byte
моделирует простой набор битов», но я мог бы утверждать, что регистр явно представляет собой нечто большее, чем «простой набор битов», даже если это управляющий регистр, который содержит флаги длиной в один или несколько битов.

Подробнее здесь: https://stackoverflow.com/questions/791 ... n-emulator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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