作者:mobiledu2502910077 | 来源:互联网 | 2023-05-20 13:53
我想知道是否有可能在ARM平台上更改正在运行的应用程序执行的字节顺序.正如你们中的一些人所知,ARM是双端的(支持大和小)我想知道是否可以在Android(或一般的Linux)上设置单个应用程序在执行时使用不同的字节顺序或者是否可以在执行中更改处理器字节顺序.
要阻止一些可能的回应.改变字节顺序(如果可能在应用程序级别上)几乎肯定是一个坏主意,但我正在为ARM平台构建工具,我想知道我使用set工具的应用程序是否可能会这样做.即使这样做可能会对其他应用程序/操作系统造成灾难性后果,我想知道它是否可以由应用程序完成.
到目前为止,我对ARM的看法似乎只有OS可以在这方面设置处理器的模式.但是我还没有就这个问题找到明确的答案.提前致谢!
1> Notlikethat..:
这是(用于ARMv7及以上硬件至少)当然是可能的,但你的情绪是完全正确的-任何人,请,请,对于理智,向前兼容和愤怒内核开发的缘故,在Linux中不这样做/ Android的 -使用REV
,REV16
,REVSH
或VREV
在适当数据为.
ARMv6中引入的SETEND
指令允许在任何权限级别切换当前执行状态的字节顺序,但是从ARMv8开始,它被弃用,默认情况下禁用,并且可能在将来完全消失.在ARMv8中,支持硬件中的混合字节序是可选的.
尽管是一个糟糕的想法,但它在目前在野外的Android应用程序中显而易见(在其他可能的用途中,它可能是strcmp()
在ARM11 上实现的最快方式,也可能是Cortex-A8),SETEND
最近对32位任务进行仿真要添加到arm64内核,所以你的工具很可能至少也应该知道它.