• 计算机多字节数据存储模式(大/小端模式)


    造冰箱的大熊猫@cnblogs 2021/4/10

     

    1、大端模式 vs 小端模式

    多字节数据存储时,可以先高字节再低字节,也可以是先低字节再高字节。以32位无符号整数0x12345678为例,该数值在存储器中占用四个字节的存储空间。如果偏移址addr=0x12,addr+1=0x34,addr+2=0x56,addr+3=0x78,为大端模式(高字节写入存储器低地址位)。如果偏移址addr=0x78,addr+1=0x56,addr+2=0x34,addr+3=0x12,为小端模式(高字节写入存储器高地址位)

    2、不同计算机系统的大小端模式

    之前编写过一个小软件用于查询计算机的大小端模式,后发现完全没有必要。

    1)大小端模式由处理器决定。可通过查阅处理器技术资料获知处理器的大小端模式,无需使用软件获取。

    2)Oracle数据库提供功能可查询多种计算机系统的大小端模式。根据查询结果网址截图),个人计算机常用的x86和x86_64处理器(无论是运行Linux、Windows还是Mac操作系统)为小端模式

    3)早期苹果计算机使用过的PowerPC处理器为大端模式

    4)TI公司C6678 DSP具有一个名为LENDIAN的管脚。DSP启动时该管脚上的电平高低决定了DSP使用大端模式还是小端模式

    3、检查计算机系统大小端模式的编程方法

    检查计算机系统大小端模式的C代码示例如下:

    WORD dummy = 0x1234;
    BYTE * pt = ( BYTE * )( &dummy );
    if ( (*pt) == 0x12 )
    printf ( "当前计算机系统为大端模式 " );
    else
    printf ( "当前计算机系统为小端模式 " );

    4、IA-32、IA-64、x86、x86_64和AMD64的区别

    为便于理解2中Oracle数据库查询结果,对不同处理器架构标识予以说明:

    x86:Intel公司研制了16位8086处理器后,又研制了更高性能的16位处理器80286和32位处理器80386。这些处理器具备向后兼容特性,也就是说新型号处理器支持旧型号处理器的指令集。此外,AMD等公司也生产80x86处理器。这些80x86处理器被统称为x86处理器,对应的指令集也被称为x86指令集。现在,由于16位x86处理器已退出商用市场,x86也特指32位x86微处理器。

    IA-32:为了与其它生厂商生产的x86处理器区分开来,Intel从80486开始使用IA-32标识自家的32位处理器。

    IA-64:Intel推出过名为Itanium(安腾)的64位处理器。该处理器使用特殊指令集,不兼容x86指令集,硬件和软件都需要重新开发,初期应用于服务器,后来在x86_64处理器的冲击下成为了“历史”。

    x86_64、AMD64:AMD研制的64位处理器支持x86指令集,具有更好的兼容性,获得了用户的青睐。最初,AMD64特指AMD的64位处理器。后来,随着Intel也开始生产支持x86指令集的64位处理器,使用x86_64统称AMD和Intel的64位处理器。

    参考资料

    [1] Big Endian and Little Endian operating systems

    [2] Intel为什么不取消AMD的X86架构授权 @ 知乎

  • 相关阅读:
    razor在App_Code中使用ActionLink无效的解决方案
    科技的进步会给人带来幸福么?
    C6000系列之C6455 DSP的EMIFA接口
    C6000系列之C6455DSP的GPIO模块
    C语言文件操作与例子
    C语言中fscanf函数读取double型浮点数的问题
    MATLAB读取CCS保存的数据
    CCS 3.3 操作C函数读写文件
    复数矩阵乘法C语言实现
    C6000系列之C6455DSP的中断系统
  • 原文地址:https://www.cnblogs.com/pandabang/p/14642756.html
Copyright © 2020-2023  润新知