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

您应该已经发布了完整的代码。作为说明,我编写了这个示例程序。请注意,它只是内联 asm,以便 ideone 可以从单个文件编译它。正如您所看到的,您发布的代码在正确使用时确实有效。所以问题一定出在你省略的其他部分。

于 2011-01-13T12:07:02.687 回答