Так или иначе связанной с этим calling assembly functions from cПередача массива функции внешней сборки
Я передаю к этой функции массив междунара и длину:
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));
После этого данные заполнены.
Вы уверены, что 'array' содержит допустимую строку ASCII с завершением \ 0? – Simone
массив определяется как int * array; array = malloc ....; для массива <= input .. –
Глупый вопрос, который необходимо задать: вы проверяете, что 'malloc' не терпит неудачу, не так ли? –