On 5 Oct 2007, at 20:35, Timur Tabi wrote:
Jan Engelhardt wrote:
On Oct 5 2007 13:27, Timur Tabi wrote:
What's the difference between __LITTLE_ENDIAN and
__LITTLE_ENDIAN_BITFIELD? Can
someone give me an example when __BIG_ENDIAN and
__LITTLE_ENDIAN_BITFIELD would
both be defined simultaneously?
standard x86:
---LSB-- ---2SB-- ---3SB-- ---MSB-- [bytes] LITTLE_ENDIAN
M765432L M765432L M765432L M765432L [bits] ?_BITFIELD
(Not sure what bitfield type, but I'd guess BIG_ENDIAN_BITFIELD)
Are you sure? I would think that all machines would have the same
byte and bit endian, otherwise you'd never be able to put a 16-bit
value into a shift register. Your bits will be shifted out like this:
<-- 07 06 05 04 03 02 01 00 15 14 13 12 11 10 09 08
So I think x86 is:
---LSB-- ---2SB-- ---3SB-- ---MSB-- [bytes] LITTLE_ENDIAN
L234567M L234567M L234567M L234567M [bits] LITTLE_ENDIAN_BITFIELD
No it is not. That makes no sense. The whole point of little endian
is that you store LSB, then 2SB, then 3SB, then MSB and then when the
CPU reads this as a 32-bit word it rotates them all around so that in
the CPU register you have:
MSB_3SB_2SB_LSB
M765432L_M765432L_M765432L_M765432L
That is what little endian means and that is how shift operations can
work fine on the CPU.
Best regards,
Anton
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer, http://www.linux-ntfs.org/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]