x86程序集以编程方式确定字节顺序

时间:2014-03-29 16:57:59

标签: assembly x86 endianness

据我所知,英特尔x86是小端。但是,如何编写汇编以编程方式确定处理器的字节顺序?

2 个答案:

答案 0 :(得分:7)

为每个字节存储一个具有不同值的单词(例如0x0001)。从同一地址加载一个字节,然后检查它匹配的原始字的哪个字节。

答案 1 :(得分:1)

在C中实现它,因为C可以移植到其他架构。我们已经知道英特尔是小端的。在组装中没有使用它。如果小端,则此示例返回1,否则返回0.

int host_endian()
{
    static const union {
        uint16_t    i;
        uint8_t     c[2];
    } test = { 0x1234 };

    return (test.c[0] == 0x34) ? 1 : 0;
}