【发布时间】:2016-05-04 20:30:29
【问题描述】:
我正在使用 Marmalde 和 C/C++ 为 android 编写游戏。 现在我想在汇编程序中编写一些重要的部分来提高性能。 但我想知道这个应用程序是否可以在大多数安卓设备上运行? (约 90%) 因为通常汇编代码取决于处理器,并且不同的安卓手机可能有不同的处理器,例如 Intel 或 ARM,所以我必须为每个不同的处理器用不同的汇编语言编写这些部分!?
【问题讨论】:
-
在大多数情况下,人类无法编写比编译器/优化器更好的 asm。所以一般来说,你应该远离自己写 asm。与仅将其留给工具相比,您可能会产生更糟糕的代码和更多的问题。 (警告:自负可能会干扰)。
-
错误的尝试。你不会写出比编译器更好的 ASM。
-
可能被误导了。您可以针对非常特定的代码片段(想到音频混合和过滤器)击败编译器,但总的来说,这通常是不值得的。
-
谢谢,但这实际上不是我的问题。我想知道我是否需要再次为每个处理器(英特尔、ARM...)编写汇编代码?
-
答案是肯定的。汇编映射(非常非常非常)非常接近指令集,并且 ARM 和 x86 指令集非常不同。虽然拥有一个映射到不同 ISA 的简单程序集可能是一个有趣的想法,但听起来它并不真正有用,因为在这一点上,你所做的只是一种蹩脚的语言,而不是接近金属,这样你就可以用可用的指令做一些高级语言无法很好地表达的事情。
标签: android c++ assembly arm marmalade