ARM アセンブリを独学で学んでいますが、簡単なプログラムを実行することすらできません。ツールチェーンとすべてをセットアップすると、コードは問題なくコンパイルされます。ただし、 Android を搭載した Galaxy Nexus (私がテストしている唯一のプラットフォーム) で/data/local/tmp/からプログラムを実行すると、常に「Stopped (signal)」および/または「139 Segmentation fault」が発生します (通常は番号なし)。これは、C コードからアセンブリ関数を呼び出そうとした瞬間に発生します。
neotest.c:
#include <stdio.h>
void neon_test(void); // I also tried variations like extern, but no avail
int main(int argc, char* argv[]) {
printf("\nHello World\n"); // works just fine
neon_test(); // segmentation fault
printf("Done!");
return 0;
}
(neontest.h ファイルは現在空です)
neotest_neon.s:
.text // added because some wiki said so
.arch armv7a
.fpu neon
.thumb
.syntax unified
.align 4
.global neon_test
.func neon_test
neon_test:
NOP
.endfunc
.end
これは権利の問題なのではないかと心配していますが、この時点以降の問題を適切に特定する方法さえわかりません.