不同内存寻址方案的C代码的可移植性

不同内存寻址方案的C代码的可移植性,第1张

概述如果我理解正确, 0x10c 0x10c描述了一个16位地址空间,其中每个偏移地址为16位字,而不是大多数其他存储器架构中的字节.这有一些好奇的后果,例如我想像sizeof(char)和sizeof(short)都会返回1. 将C代码保存在这种不同的存储器寻址方案之间是否可行?要记住的是什么? 编辑:也许我应该给出一个更具体的例子.假设你有一些处理字节流的网络代码.通过在每个地址只放置一个字节来丢 如果我理解正确,0x10c 0x10c描述了一个16位地址空间,其中每个偏移地址为16位字,而不是大多数其他存储器架构中的字节.这有一些好奇的后果,例如我想像sizeof(char)和sizeof(short)都会返回1.

将C代码保存在这种不同的存储器寻址方案之间是否可行?要记住的是什么?

编辑:也许我应该给出一个更具体的例子.假设你有一些处理字节流的网络代码.通过在每个地址只放置一个字节来丢弃一半的内存,以便代码可以保持不变,还是使用移位来概括所有内容来处理每个偏移量的N个字节?

编辑2:答案似乎关注数据类型大小的问题,这不是重点 – 我甚至不应该提到它.问题在于如何应对丢失使用指针解决内存中任何字节的能力.期望代码与此无关的是合理的吗?

解决方法 这是完全可行的.大致来说,C的基本整数数据类型的大小维持在:
sizeof (char) <= sizeof (short) <= sizeof (int) <= sizeof (long)

以上并不完全符合规格说明的要求,但它是接近的.

正如awoodland在评论中所指出的那样,您也希望Dcpu-16的C编译器具有CHAR_BIT == 16.

没有假设Dcpu-16将具有sizeof(char)== 2的奖金,这是一个常见的谬误.

总结

以上是内存溢出为你收集整理的不同内存寻址方案的C代码的可移植性全部内容,希望文章能够帮你解决不同内存寻址方案的C代码的可移植性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1235662.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存