编译原理: Big_endian, Little_endian 问题
来源:互联网 发布:淘宝哪里看自己的等级 编辑:程序博客网 时间:2024/05/21 14:45
试题1:请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
解答:
int checkCPU( )
{
{
union w
{
int a;
char b;
} c;
c.a = 1;
return(c.b ==1);
}
}
剖析:
嵌入式系统开发者应该对Little-endian和Big-endian模式非常了解。采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如,16bit宽的数0x1234在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址
0x4000
0x4001
存放内容
0x34
0x12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址
0x4000
0x4001
存放内容
0x12
0x34
32bit宽的数0x12345678在Little-endian模式CPU内存中的存放方式(假设从地址0x4000开始存放)为:
内存地址
0x4000
0x4001
0x4002
0x4003
存放内容
0x78
0x56
0x34
0x12
而在Big-endian模式CPU内存中的存放方式则为:
内存地址
0x4000
0x4001
0x4002
0x4003
存放内容
0x12
0x34
0x56
0x78
联合体union的存放顺序是所有成员都从低地址开始存放,面试者的解答利用该特性,轻松地获得了CPU对内存采用Little-endian还是Big-endian模式读写。如果谁能当场给出这个解答,那简直就是一个天才的程序员。
- 编译原理: Big_endian, Little_endian 问题
- Big_endian Little_endian
- Big_Endian和Little_Endian
- big_endian和little_endian(转)
- big_endian和little_endian的说明
- big_endian和little_endian的说明
- Endian.BIG_ENDIAN 和Endian.LITTLE_ENDIAN
- 设置ByteOrder的顺序LITTLE_ENDIAN,BIG_ENDIAN
- big_endian和little_endian的说明收藏[转]
- 关于测试PC是big_endian/little_endian
- cpu 的大端,小端,Big_endian,little_endian
- big_endian和little_endian的说明(转载)
- big_endian和little_endian的说明(转载)
- 判断处理器使用Big_endian还是Little_endian模式存储数据
- C函数,判断处理器是Big_endian的还是Little_endian的
- big_endian and little_endian 及 网络字节序 主机字节序
- 计算机网络(一)big_endian,little_endian, ip数据报头
- 大端(Big_endian)和小端(Little_endian)
- Write Your Own Operating System Tutorial(中文版) - 简介
- while ((*strDest++=*strSrc++)!='/0'); 分解成单条语句
- Google 节日徽标全集 (1999-2009) (中)
- 你还在用if else吗?
- Write Your Own Operating System Tutorial(中文版) - Lesson 1: 引导扇区
- 编译原理: Big_endian, Little_endian 问题
- Write Your Own Operating System Tutorial(中文版) - Lesson 2: 着手我们第一张启动盘
- Write Your Own Operating System Tutorial(中文版)- Lesson 3: NASM
- 内存占有计算
- Write Your Own Operating System Tutorial(中文版)- Lesson 4: Hello, World
- extern “C”
- Write Your Own Operating System Tutorial(中文版) -Lesson 5: 动起来!
- 内存申请及存放位置问题
- Write Your Own Operating System Tutorial(中文版) - Lesson 6: Boot Loader