在组件中推入堆栈时出现分段错误

时间:2016-06-21 15:36:57

标签: c assembly segmentation-fault sigsegv

我正在编写一个问题来计算汇编中的最小公倍数。 GDB在第一行pushl %ebp显示sigsegv异常。你能告诉我怎么解决这个问题吗?

test.c

#include <stdio.h>

extern int nww(int a, int b);                               // Funkcja z asm
int main()
{
int a = 10, b = 3;

int nw= nww(a,b);
printf("NWW %d i %d  = %d ",a,b,nw);

return 0;
}

nww.s

.text       
.global nww
.type nww, @function        
nww:

pushl %ebp
movl %esp, %ebp

movl 8(%ebp), %eax
movl 12(%ebp), %ebx 

nwd: 
movl $0, %edx     # miejsce na reszte 
divl %ebx              # podziel a przez b, reszta w d 
movl %ebx, %eax 
movl %edx, %ebx       # przygotowanie nastepnego dzielenia 
cmp $0, %edx
jnz nww

movl %eax, %edx     # NWD do dx

movl 8(%ebp), %eax                  # nowe A i B
movl 12(%ebp), %ebx 

imull %ebx, %eax 
divl %edx 

exit:

movl %ebp, %esp
popl %ebp
ret

0 个答案:

没有答案