在ARM上切换字节序

时间:2019-05-03 05:23:41

标签: android arm processor processor-architecture

我听说ARM处理器可以在Little-Endian和Big-Endian之间切换。处理器需要什么呢?它可以在Android手机上使用吗?

2 个答案:

答案 0 :(得分:0)

取决于处理器,可以即时切换字节序。较旧的处理器将在一个字节序状态下启动,并有望留在该位置。在后一种情况下,整个设计通常会采用大端或小端的方式。

支持混合字节序操作的主要原因是要支持网络堆栈,其中要处理的基础数据集是本地大字节序。对于处理器正在运行定义良好的软件堆栈而不是用作通用应用程序设备的交换机/路由器和移动基站而言,这意义重大。

请注意,在不同的ARM体系结构中,big-endian行为有几种不同的实现,您需要检查一下它在任何特定内核上的工作原理。

答案 1 :(得分:-1)

您可以切换字节序,但是在操作系统启动并运行后您将无法执行此操作。这只会使事情搞砸。如果要执行此操作,则应在启动顺序的早期就执行此操作。在您的应用程序运行时,将选择字节序,并且不会更改字节序。

为什么要这么做?唯一真正的原因是,如果您正在编写必须处理许多小端数据的嵌入式软件,或者运行的程序假定的写法是小端而不固定的。这种数据往往来自x86应用程序,该应用程序以其本机字节顺序将内容写出(x86是小端)。没有很多其他原因要这样做。您将看到ARM几乎完全以大字节序模式运行。