奇怪的汇编问题
在一个.S文件中定义了一个函数int func(int a, int b),功能是返回(a + b)func://push %ecx
push %ebp
movl %esp, %ebp
subl $16, %esp
movl 8(%ebp), %eax
addl 12(%ebp), %eax
movl %ebp, %esp
pop %ebp
//pop %ecx
ret如果用上代码,一切正常,如果将上述代码里面的push %ecx和pop %ecx用上,函数func的返回值就错了,不知为啥不能保存%ecx? 因为你改变了正常的栈帧结构
movl 8(%ebp), %eax
addl 12(%ebp), %eax
这里的值要相应地加4 回复 2# qtdszws
所言极是
页:
[1]