1

どういうわけか、cからのこの呼び出しアセンブリ関数に関連しています

私はその関数にintと長さの配列を渡します:

do_stuff_in_asm (array, len);

組立部品はこんな感じ

...................
movl 8(%ebp), %eax
movl 12(%ebp), %ecx
movl $0, %edi
...................
movl (%eax,%edi,4), %edx
pushl %edx
pushl $printtext
call printf
addl $8, $esp
..................

len引数12(%ebp)を出力できますが、配列の最初の要素である%edxで同じことを試みるたびに、セグメンテーション違反が発生します。

int *array, n, i;

printf ("Give array size: ");
scanf("%d",&n);

array = malloc (n * sizeof(int));

次に、データでいっぱいになります。

4

1 に答える 1

0

完全なコードを投稿する必要があります。実例として、私はこのサンプルプログラムを書きました。ideoneが単一のファイルからコンパイルできるように、これはインラインasmのみであることに注意してください。ご覧のとおり、投稿したコードを適切に使用すると機能します。したがって、問題はあなたが省略した他の部分にあるに違いありません。

于 2011-01-13T12:07:02.687 に答える