开发者

Android NDK - does it support straight ARM code or just Thumb

开发者 https://www.devze.com 2022-12-21 19:01 出处:网络
I have been asked to evaluate the Android platform for our product and I am looking at various options, I am only just scratching the surface just now and the one thing that is bothering me is that I

I have been asked to evaluate the Android platform for our product and I am looking at various options, I am only just scratching the surface just now and the one thing that is bothering me is that I cannot see how to compile code as straight ARM code (no Thumb), I know that Thumb runs slower and we will need the performance in key sections of our code.

I think it should just be setti开发者_运维问答ng the -march flag in the LOCAL_CFLAGS of the Android.mk file, but I cannot get that to work...

Can anyone help?


Specifying the following flag for a module in Android.mk will compile straight ARM code.

LOCAL_ARM_MODE := arm

Enabling optimization may also help:

LOCAL_CFLAGS := -O3


You can build in ARM, Thumb, or a mix of the two.

In the makefile, in LOCAL_SRC_FILES, where you would list MyFile.c, specify MyFile.c.arm (do not rename the file on disk, just do it in the list of source files). This convention is used throughout Android for code that is performance-critical (or just needs to be ARM for some reason).

The usual notes apply, of course: Thumb code tends to require more instructions to accomplish something, but each instruction is half the size, so the code is usually a bit slower but also a fair bit smaller. In some situations the smaller size allows a better fit with the (tiny) caches in the ARM CPUs, and could actually be faster.

0

精彩评论

暂无评论...
验证码 换一张
取 消