阅读:1471回复:2
涉及到bigEndian和littleEndian结构转换的问题
很多时候在移值驱动的时候都会遇到芯片手册中的结构在不同CPU下的重组问题。
比如 在Window下定义结构(little Endian) struct TypeA { unsigned long a:1; unsigned long b:1; unsigned long c:3; unsigned long d:3; unsigned long e:1; unsigned long f:1; unsigned long g:1; unsigned long h:1; unsigned long i:1; unsigned long j:2; unsigned long k:1; unsigned long l:12; unsigned long m:1; unsigned long m:1 }; 在BigEndian结构下怎么定义结构才能使数据保持一致呢? |
|
沙发#
发布于:2004-02-27 17:55
很多时候在移值驱动的时候都会遇到芯片手册中的结构在不同CPU下的重组问题。 修改一下新的结构如上 |
|
板凳#
发布于:2004-02-27 18:07
我们知道一个结构 在不同的compiler下其在内存中的map是不一样的。
比如在VC(little Endian) struct TypeA { unsigned long a:1; unsigned long b:1; unsigned long c:3; unsigned long d:3; unsigned long e:1; unsigned long f:1; unsigned long g:1; unsigned long h:1; unsigned long i:1; unsigned long j:2; unsigned long k:1; unsigned long l:12; unsigned long m:1; unsigned long n:3; } 在Window下(little Endian)其在内存中的Map为: n|m|l|k|j|i|h|g|f|e|d|c|b|a 而在MIPS下(Big Endian)其在内存中的Map为: a|b|c|d|e|f|g|h|i|j|k|l|m|n; 这些都是编译器造成的影响; |
|