PowerPC的字节序问题

本文介绍了PowerPC处理器采用大端模式的字节序特点,对比了大小端模式在存储字节序列上的差异。内容涉及网络字节顺序、处理器寄存器的位布局以及数据总线的bit序列问题,强调了在不同端模式处理器交互时需要注意的数据转换问题。
摘要由CSDN通过智能技术生成

 转自:http://lion3875.blog.51cto.com/2911026/529749

因为以前一直接触的是x86和ARM,习惯了little endian。PowerPC采用大端模式。
存放的字节顺序对于大小端的区别是:Big Endian, 高字节(MSB)存放在低地址。Little Endian,低字节(LSB)存放在低地址。

0x12345678在大端和小端中的存放序列如下图所示:
endian.jpg


从软件的角度看,不同端模式的处理器进行数据传递时需要考虑端模式的问题。互联网使用的网络字节顺序采用大端模式进行编址,这样大端模式处理器的字节序到网络字节序不需要转换,此时ntohs(n) = n, ntohl(n) = n;而小端模式处理器的字节序到网络字节必须进行转换,此时ntohs(n) = __swap16(n), ntohl = __swap32(n)。

 

驱动程序员大多比较关注register相关的东西,对于大小端模式而言,不同处理器的register bitlayout也不相同,比如对于32位register而言,PowerPC将其寄存器的最高位msb(most significant bit)定义为0,最低位lsb(least significant bit)定义为31。小端处理器正好相反,比如Intel的处理器。大小端寄存器bit layout区别如下图所示:




数据0x12345678写到大小端的register中如下图:



从数据总线角度而言,大端模式32位数据总线的msb是第0位, MSB是数据总线的第0~7bit,小端模式的32位数据总线的msb是第31位, MSB是数据总线的第31~24bit。

当不同端模式的处理器和外设互联时,IC的设计人员需要关注数据总线的bit序列问题。在实际应用中,并没有大端外设。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值