因为客户的机器是ibm服务器,用的PowerPC,是大端模式,所以最近我就研究了一把小端程序向大端cpu移植的注意事项,其实如果不涉及到对外接口,移植工作会很轻松。
首先要明白什么是大端,小端,网络字节序。先撇开“网络字节序”,大小端说白了就是cpu取数据是从高地址还是从低地址开始。因为无论是32位还是64位架构,一个字节总是由8位组成,所以对于一个字节的数据,大小端的处理都是一样的,例如char,但是如果是由多个字节组成的数据,那么麻烦就来了,例如int变量,典型的,它占了4个字节,所以大小端处理就不同。举个例子:
struct res
{
char type;
int data;
};
当小端的机器将此结构发送给大端的机器时,大端机器对data的读取就会出现问题,解决这个问题的方法是将data转换成网络字节序,网络字节序是大端的,其实网络字节序是大端还是小端并不重要,重要的是他给通讯的双方制定了一套规则,这样,不管目标机器是大端还是小端都不会对数据的读取造成影响。
所以,在通讯的过程中,将数据转换为网络字节序,不论是对于移植,还是对于程序的兼容性,都是大有裨益的!
转载请注明:爱开源 » 移植程序到大端CPU