专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

大小端判断代码解析

作者:佚名   来源:本站原创   点击数:  更新时间:2014年04月27日   【字体:
大端模式:高位字节存在低位地址上
小端模式:高位字节存在高位地址上
用来判断大端模式和小端模式的代码如下
//获取CPU大小端模式,结果保存在cpu_endian里面
void find_cpu_endian(void)
int x=1;
if(*(char*)&x==1)cpu_endian=0;                 //小端模式 
else cpu_endian=1; //大端模式  
if(*(char*)&x==1)解释一下这一句.
&x:取x的地址
(char*)&x:将x的地址变成char类型的指针.指向的内容截取了int x中的第一个字节上的内容.
(*(char*)&x==1):取出指针的内容判断是否与1相同

来看看汇编代码

movs r0,#0x01       //int x=1;
ldrb r1,[r0,#0x00]  //加载r0中的无符号字节数据到r1
cmp r1,#0x01    bne 0x08000266      //判断r1中的值是否为1不是跳转到266
movs r1,#0x00       //给r1寄存器写零
ldr r2,[pc,#176]   //pc指针所在的地址加上#176得到的地址保存在r2上
strb r1,[r2,#0x00]  //把r1的值保存在r2中的地址上返回endian的值
关闭窗口

相关文章