由于某种原因,我有一个小问题。必须将小型C程序转换为汇编程序。基本上是输入的一个小主体,它从用户获取数组大小的值,来自用户的数组元素,然后调用quicksort ..
我的问题是以下代码:
pushl %ebp
movl %esp, %ebp
pushl %esi
pushl %edi
/*allocate i, n to stack */
subl $8, %esp
/* n is at -12(%ebp), i is at -16(%ebp) */
pushl $string1
call printf #printf("enter size of array: ")
addl $4, %esp
leal -12(%ebp),%esi
pushl %esi
pushl $format
call scanf #scanf("%d", n)
addl $8, %esp
pushl %esi
pushl $string2
call printf
addl $8, %esp
我知道scanf需要存储地址,我的问题是当我再次调用printf时,
printf("enter %d variables" ,n)
它打印%esi的地址。我需要它来显示实际的变量(很明显),我需要能够使用变量作为for循环的限制来获取数组中的变量,但它会让我继续使用segfaulting,这是因为它使用了地址而不是实际变量。
剩下的我很好,我不能出于任何原因,把这个问题搞清楚。