Si entiendo correctamente, DCPU-16 specification para 0x10c describe un espacio de direcciones de 16 bits donde cada desplazamiento trata una palabra de 16 bits, en lugar de un byte como en la mayoría de las otras arquitecturas de memoria. Esto tiene algunas consecuencias curiosas, p. Imagino que sizeof(char)
y sizeof(short)
devolverían 1
.Portabilidad del código C para diferentes esquemas de direccionamiento de memoria
¿Es factible mantener el código C portátil entre estos esquemas de direcciones de memoria diferentes? ¿Cuáles serían los inconvenientes para tener en cuenta?
editar: quizás debería haber dado un ejemplo más específico. Digamos que tiene un código de red que trata con flujos de bytes. ¿Desechas la mitad de tu memoria al poner solo un byte en cada dirección para que el código permanezca igual, o generalizas todo con bitshifts para tratar con N bytes por desplazamiento?
edit2: Las respuestas parecen enfocarse en el tema del tamaño de los tipos de datos, lo cual no era el punto; ni siquiera debería haberlo mencionado. La pregunta es cómo lidiar con la pérdida de la capacidad de direccionar cualquier byte en la memoria con un puntero. ¿Es razonable esperar que el código sea agnóstico sobre esto?
Siempre y cuando no hagas cosas como asumir que CHAR_BIT siempre es 8, entonces no hay un gran problema. – Flexo
Sí, es factible. –
Mientras siga el estándar C y no haga suposiciones sobre cosas que el estándar dice que son variables o dan como resultado un comportamiento o resultados no definidos o no especificados o definidos por la implementación, debería estar bien. –