以某种方式与此calling assembly functions from c
相关我正在向该函数传递一个int数组和一个length:
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));
然后它充满了数据。
答案 0 :(得分:0)
您应该已发布完整代码。举个例子,我写了this sample program。注意,它只是内联asm,因此ideone可以从单个文件中编译它。如您所见,您发布的代码在正确使用时确实有效。所以问题必须在你省略的其他部分。