Chinaunix首页 | 论坛 | 博客
  • 博客访问: 28268
  • 博文数量: 8
  • 博客积分: 55
  • 博客等级: 民兵
  • 技术积分: 60
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-21 16:54
文章分类

全部博文(8)

文章存档

2012年(1)

2011年(7)

我的朋友

分类:

2012-02-07 17:01:28

嵌入式系统开发者应该对Little-endianBig-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:

内存地址

0x4000

0x4001

存放内容

0x34

0x12

而在Big-endian模式CPU内存中的存放方式则为:

内存地址

0x4000

0x4001

存放内容

0x12

0x34

32bit宽的数0x12345678Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:

内存地址

0x4000

0x4001

0x4002

0x4003

存放内容

0x78

0x56

0x34

0x12

而在Big-endian模式CPU内存中的存放方式则为:

内存地址

0x4000

0x4001

0x4002

0x4003

存放内容

0x12

0x34

0x56

0x78

 

C编程实现判断,代码如下:

/* 测试你的机器使用的大端模式,还是小端模式 */
/* 若x0=0x11,则是大端; 若x0=0x22,则是小端 */

#include <stdio.h>
 
int main()
{
    short int x=0x1122;
    char *p = &x;
 
    if ( *p == 0x11)
        printf("big-endian(大端模式)\n");
    else
        printf("little-endian(小端模式)\n");

    return 0;
}


阅读(871) | 评论(0) | 转发(0) |
0

上一篇:高级Linux Kernel Inline Hook技术分析与实现

下一篇:没有了

给主人留下些什么吧!~~