可以使用LLVM IR(中间表示)来创建跨平台(iphone和Android)ARM可执行文件吗?

我正在研究从相同的代码库有效地创建Android和iPhone目标应用程序的可能方法,无论是在C/C++ / C#/ Objective-C还是Java(使用VMKit).

LLVM看起来很有前景,但是我对于围绕不同ARM CPU实现的兼容性问题略感困惑,主要来自底层芯片组如何“解析”图形和声音代码(即我必须编写特定的ARM芯片组,或者像OpenGL这样的高级API是否足够?).

我对各种Cross Dev产品(即Airplay SDK,MoSync(GPL-GCC),Unity3d,XMLVM等)了解不多,但我真正想做的是用Java编写或使用C/C++引擎,如果可能,发出LLVM IR并创建兼容的ARM可执行文件.

如果上述任何内容含糊不清,请致歉.

谢谢

丰富

解决方法:

编译器不是问题.要为两者进行开发,您需要创建一个允许您在该层上编写单个应用程序的抽象层.然后有两个抽象层实现,一个是进行Android api调用,另一个是进行iPhone api调用.编译器无法帮助您.

LLVM IR在其可移植性方面可能感兴趣的地方是:

int a,b;

a=7;
b=a-4;

编译为IR然后采用相同的IR并为所有不同的处理器类型生成汇编程序并检查差异.

对于例如需要在显示器上写入像素的实际应用,存在寄存器,显示器的大小和其他差异的大量存在,并且这些差异不在IR和汇编器后端之间暴露但是暴露在主C程序和平台库定义的api调用中,所以你必须解决C中的问题而不是IR或汇编程序.

上一篇:容器技术基础(二)|学习笔记


下一篇:c – 将std :: vector的副本附加到自身的末尾