将数组传递给外部汇编函数

时间:2011-01-13 08:30:11

标签: c assembly x86 gas

以某种方式与此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));

然后它充满了数据。

1 个答案:

答案 0 :(得分:0)

您应该已发布完整代码。举个例子,我写了this sample program。注意,它只是内联asm,因此ideone可以从单个文件中编译它。如您所见,您发布的代码在正确使用时确实有效。所以问题必须在你省略的其他部分。