大端模式:高位字节存在低位地址上 小端模式:高位字节存在高位地址上 用来判断大端模式和小端模式的代码如下 //获取
大小端模式,结果保存在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的值
-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。
自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。