の命令(整数除算、および)を発行するように指示gccするにはどうすればよいですか?idivudivsdivarm application processors
これまでのところ、私が思いつく唯一の方法は-mcpu=cortex-a15、gcc 4.7 で使用することです。
$cat idiv.c
int test_idiv(int a, int b) {
return a / b;
}
gcc 4.7 ( Android NDK r8eにバンドル)
$gcc -O2 -mcpu=cortex-a15 -c idiv.c
$objdump -S idiv.o
00000000 <test_idiv>:
0: e710f110 sdiv r0, r0, r1
4: e12fff1e bx lr
これでも、横にidiv.c:1:0: warning: switch -mcpu=cortex-a15 conflicts with -march=armv7-a switch [enabled by default]追加して指示を出さなければ与えてくれます。-march=armv7-a-mcpu=cortex-a15idiv
$gcc -O2 -mcpu=cortex-a15 -march=armv7-a -c idiv.c
idiv.c:1:0: warning: switch -mcpu=cortex-a15 conflicts with -march=armv7-a switch [enabled by default]
$objdump -S idiv.o
00000000 <test_idiv>:
0: e92d4008 push {r3, lr}
4: ebfffffe bl 0 <__aeabi_idiv>
8: e8bd8008 pop {r3, pc}
gcc 4.6 (Android NDK r8e にバンドルされています) では、idiv命令をまったく発行しませんが、組み合わせ-mcpu=cortex-a15に文句を言うこともありません。-mcpu=cortex-a15 -march=armv7-a
Afaikidivは on のオプションarmv7なので、gcc にそれらを発行するように指示するよりクリーンな方法があるはずですが、どうすればよいでしょうか?