大端模式和小端模式指的是我们计算机的存储数据的方通常又称为大尾和小尾。

大端:数据的高字节保存在内存的高地址

小端:数据的高字节保存在内存的低地址

下面是两种方式的示意图j_0047.gif

wKiom1ZHOmfxD7nGAAAlN196Vlw402.png

堆栈指针寄存器SP的走向从SP到SP+3(SP始终指向栈顶)

知识链接:

     断点和现场保护:这是堆栈的主要功能 保护断点指主程序调用子程序或执行中断服务程序的时候,为了能在子程序或者中断服务程序执行完之后顺利的返回主程序,必须将断点处的有关信息压入堆栈,执行完子程序后再按照先进先出的原则将其pop出来回复有关寄存器的内容,使得主程序能够顺利的执行,一般断点保护由系统自动完成无需人为干预。

根据上面的图,咱们可以设计一个程序来测试计算机是大端还是小端模式。j_0051.gif

int test(void)
{
     int arr=0x65bc225d;
     scanf_s("%d",&arr);
     char *p=(char *)&arr;//指针p指向arr的地址;
     if(*p == 0x65)
          retrun 1;
     else
          return 0;
}

我们还可以使用联合来测试机器的字节序

void check()
{
      union UN
       {
            int c;//4字节
            char i;//1个字节
        }
        UN.c=1;
        if(UN.i==1)
            printf("little!");
        else
            printf("big!"); 
  }