拈花小仙 发表于 2014-3-29 20:40:32

请详细说下这个函数怎么的判断大端小端

int checkSystem( )
{
union check
{
int i;
char ch;
}c;
c.i = 1;
return (c.ch ==1);
}

我汇编学的很差,麻烦详细点,最好有图,谢谢!

青玄 发表于 2014-3-29 20:40:33

亲!,其实,大端就是低地址存放低位数,高地址存放低位数,而小端则是高地址存放高位数,低地址存放低位数,下面就是判断大端与小端的一个程序,其中有两个判断的方法,我用宏注释把另外一个注释了,如果想运行一个的话,只要把if中的0改为1就行了,上面也有我的必要的注释和解释,你看一下,看能不能看懂:

#include<stdio.h>

#if(0)
int checkCPU();

main()
{
        int j;
        j = checkCPU();

        printf("j = %d\n", j);
}

int checkCPU()
{
        union w
        {
                int a;   //这里占4个字节   32位   
                char b;//这里占一个字节8位
        } c;

        c.a = 1;    //一个数字占一个字节,把1赋给整型a;如果是小端的话
                //1就存放在整型a的低地址中

        return(c.b == 1);   //如果b==1的话那就是小端
}
#endif

#if(1)
int main( )
{
      union w    //这个就更好理解了
{   
             int a;
             char b;    //定义一个字符数组
      } c;
      c.a = 1;
if(c.b == 1)   //也就相当于地位上的数据
          
   printf("这个地址是小端模式\n");

else if(c.b == 1)

   printf("这个地址是大端模式\n");
return 0;
}
#endif

oggplay 发表于 2014-3-29 22:40:22

本帖最后由 oggplay 于 2014-3-29 22:49 编辑

看x/16b 0x4006d0下面那一行 最后的0x01然后接着下面的3个0x00,因为int为4个字节。所以能看出我的机器是小端法。

页: [1]
查看完整版本: 请详细说下这个函数怎么的判断大端小端