Если я правильно понимаю, DCPU-16 спецификация для 0x10c описывает 16-разрядный адресное пространство, в котором каждое смещение обращается к 16-битовому слову, а не к байту, как в большинстве других архитектур памяти. Это имеет некоторые любопытные последствия, например. Я полагаю, что sizeof(char)
и sizeof(short)
оба возвращают 1
.
Можно ли сохранить C-код переносимым между такими различными схемами адресации памяти? Что было бы страшным иметь в виду?
edit: возможно, я должен был привести более конкретный пример. Скажем, у вас есть сетевой код, который связан с потоками байтов. Вы выбрасываете половину своей памяти, помещая только один байт на каждый адрес, чтобы код оставался прежним, или вы обобщаете все с помощью бит-брейков для обработки N байтов на смещение?
edit2. В ответах, похоже, основное внимание уделяется вопросу о размерах данных, и это не главное - я даже не должен был упоминать об этом. Вопрос заключается в том, как справиться с потерей способности обращаться к любому байту в памяти с помощью указателя. Можно ли ожидать, что код будет агностик в этом вопросе?