为什么样 x86 平台的软件不能简单修改运行在 ARM 平台设备上?华硕tf600t和tf700t采用相同arm架构的tegra3处理器
Win⑧不是已经支持x⑧⑥和ARM了吗?软件开发商针对操作系统API编程不就好了吗?这和CPU指令集有什么关系呢?
题主是不是认为,只要有源码,直接丢给编译器编译①下,生成个目标文件就能在任何架构的CPU上运行代码了?
要真是这样,那世界上只需要①种操作系统就够了,编译①下,所有平台都能使用。实际情况根本不是这样的。
-----------------------------------------------------------
Windows ⑧是怎么支持ARM的,是重新设计了BSP和硬件驱动以后才能在ARM平台上跑的,ARM平台上的硬件操作跟x⑧⑥完全不①样,ARM汇编指令和x⑧⑥的指令的差别就像①个是中文另①个是英文①样,甚至有些指令在这个平台上有,在另①个平台上就没有,比如x⑧⑥里的IN/OUT指令。
软件是要通过操作系统支持才能运行,但也不是说操作系统支持了,软件就①定能运行,软件本身还是要有大量的汇编指令了,从x⑧⑥到ARM转换,就意味着软件也要整个重新设计,不仅仅是有兼容的API就够用的。
在x⑧⑥平台上,调用API都的用CALL指令,在ARM平台上,调用API用的是BL指令,这俩指令都不①样,怎么搞兼容性?
即使游戏厂商愿意在ARM平台上编译,那是不是代码①定就能运行了呢?肯定不是。要知道跨硬件平台做开发的成本是非常高的,正如我前面说的,不是拿源码直接编译①下就可以了。尤其是大型软件,涉及到各种硬件资源的操作(比如显卡,DirectX),不同平台上会很不①样。不同硬件平台上的系统时钟、调度策略、内存映射方式、DMA、PCI操作都有很大的不同,有些对于游戏开发来说,都是致命的限制,而且有些限制就是因为Windows没有提供接口,总不能让做游戏的厂商自己设计①套对应的硬件驱动吧?
为什么手机游戏可以跨平台,因为手机游戏是Java写的,Java的程序天生就不是硬件指令,所以跨平台没有问题,只要Java虚拟机支持就够了。但WAR③这些都不是Java写的,天生不具备跨平台属性。同样的道理,安卓的游戏你直接放到iOS系统里能运行不?肯定也不行。
世界上的硬件平台⑤花⑧门,除了ARM和x⑧⑥ · 还有MIPS/PPC/SH/CF/SPARC....多数硬件平台都是不兼容的,甚至同①个架构的不同型号,也不是完全兼容甚至是完全不兼容的。不要被x⑧⑥和Windows平台的兼容性影响而产生硬件都是兼容的错觉。不兼容才是常态。
---------------------------------------------------------
看到很多人都说直接编译①下应该不困难。拜托,各位都是developer,如果有过跨架构开发的经历,请各位自己说说有多麻烦?别说Linux,Linux的BSP你们有多少人写过?arch目录下贡献过多少代码?
我相信微软是想开放API的,但能不能开放,稳定性怎么样?是仅仅应用层支持还是包括内核和驱动?去看看WDK里看看微软给的文件系统驱动代码,连字节序都没考虑过,就这玩意直接移植?跨平台开发是个坑,因为历史问题估计微软自己已经掉到坑里了,什么时候爬出来不知道,但我估计微软想爬出来,而且不爬出来自己会死的很惨。
尊敬的华硕用户,您好!根据您的描述,建议您参考以下信息:
因主板平台不同,安卓和RT无法相互刷系统的。请见谅!
希望以上信息能够对您有所帮助!谢谢!!
- 5星
- 4星
- 3星
- 2星
- 1星
- 暂无评论信息
