Я работаю над эмулятором Chip-8 на C, имея в виду, чтобы он был как кросс-платформенный и как можно мал для совместимости со встроенными системами и системами с низкими спецификациями (и бросить вызов самому себе), что означает возможность использовать SDL, ncurses (когда я добираюсь до этого) и что-то еще. Таким образом, я использовал unsigned chars вместо ints или unsigned ints, и я использовал «typedef unsigned char byte», чтобы сделать его более удобным. Я трачу свое время, даже с целью идеально сделать его совместимым с очень маленькими системами или просто использовать «typedef unsigned int byte» достаточно, не жертвуя производительностью?Полезность неподписанного символа в встроенных системах в C
ответ
Вы должны просто отделить интерпретатор от привязок io.
Только переводчик должен быть 8-битным портативным.
Каждая целевая платформа будет иметь различный набор технологий, доступных для ввода-вывода.
SDL или curses предоставят вам некоторую мобильность между платформами * nix и windows, но если они доступны, вы, вероятно, будете иметь 32 бита целых чисел, возможно, придется иметь дело с 16 битами. Но, конечно, не с 8-битными целыми числами.
С другой стороны, имея дело с 8-битными и 16-битными голографическими процессорами, вы, вероятно, просто подключите свой проект непосредственно к графическому драйверу.
Он использует 8 бит в основном для работы с самим набором инструкций. Итак, следует ли использовать или использовать только 8-битные целые числа с набором команд/cpu struct и регулярными неподписанными ints для всего остального? – eggbertx
Да, если у вас нет конкретной 8-битной цели. Все живое составляет не менее 32 бит, за исключением некоторых популярных 16-битных контроллеров pic и avr, которые стоят так же, как и их 32-битные эволюции. – xvan
В идеале я хочу, чтобы он был совместим с каждой системой по-человечески. Опять же, для вызова, поэтому я начал с 8-битных целых чисел, и почему я включил возможность ncurses в качестве альтернативы SDL – eggbertx
У вас есть основная идея, но не решение. В современном C мы имеем тип в stdint.h.
Это тип, который вы должны использовать, что означает, что вы говорите компилятору: «Мне не нужно больше 8 байтов для этого целого, но не стесняйтесь использовать больший размер, если это повышает производительность».
Но не будет ли причиной проблемы сопоставимости при построении чего-то вроде DOS? – eggbertx
@Josh Почему вы строите DOS? Нет, это не вызовет каких-либо проблем с совместимостью, это красота типов stdint.Хотя, поскольку вы не знаете, насколько велико целое число, вы должны рассматривать его как 'uint8_t' при рассмотрении неявных рекламных акций типа. – Lundin
- 1. Копирование неподписанного символа в C
- 2. C++ неподписанного символа длиной массива
- 3. Диапазон неподписанного символа на языке C
- 4. malloc во встроенных системах
- 5. Необходимость C++ для сборки во встроенных системах
- 6. Отрицательных числа типа неподписанного символа
- 7. Использование памяти во встроенных системах
- 8. Выполнение кода во встроенных системах
- 9. Намерение инкапсуляции во встроенных системах
- 10. Сравнение подписанного и неподписанного символа
- 11. длина высчитывает из неподписанного символа
- 12. Полезность bool * в C#
- 13. Генерация энтропии во встроенных системах
- 14. Использование mallinfo во встроенных системах
- 15. gdb представление неподписанного символа - это противоречиво?
- 16. C Conver неподписанного символ в HEX
- 17. CORBA IDL на C++ - символ против неподписанного символа?
- 18. C++ стиль литой из неподписанного символа * на константный символ *
- 19. C++ Использования неподписанного символа вместо ЬурейеГо знака __int8
- 20. DirectX11 Как CreateTexture2D из неподписанного символа * данные
- 21. Кастинг неподписанного символа * на неподписанный символ ** без &
- 22. вращение неподписанного символа на n бит
- 23. переход от сборки к C во встроенных системах
- 24. Какова полезность пустого файла C++?
- 25. Typecast для неподписанного символа и умножения переменных
- 26. Преобразование данных UIImage в сопзЬ неподписанного символа myArry [100]
- 27. Преимущества объединения потоков во встроенных системах
- 28. Обработка переполнения стека во встроенных системах
- 29. источники «уникальности»/энтропии на встроенных системах
- 30. Концепция управления драйверами устройств во встроенных системах
Я не знаю о Chip-8, но googling Я читал, что это 8 бит. Предположим, что тип int имеет размер одного байта и char тоже, безразлично использовать 'typedef unsigned int' или' typedef unsigned char'. Они имеют такой же эффект. – ViniciusArruda
Да, Chip-8 - это 8-битный язык, но моя проблема была меньше с самим интерпретатором/эмулятором и больше с хост-системой. Итак, размер int изменится с помощью системы, скомпилированной в/для? – eggbertx
попробуйте распечатать sizeof (int). для этого компилятора может быть 1 байт для этой цели, это своего рода идея типа переменной int, она варьируется в зависимости от цели (более или нежели char или long). –