Assembly 从x86向C函数传递参数
我正在学习汇编,我很难理解这段代码的错误。我试图将一个值(本例中为4)传递给C中的一个函数,该函数只打印这个值。但是,当我运行代码时,它会打印1而不是4。我在Ubuntu上运行64位,并且使用GCC编译 以下是大会:Assembly 从x86向C函数传递参数,assembly,x86,Assembly,X86,我正在学习汇编,我很难理解这段代码的错误。我试图将一个值(本例中为4)传递给C中的一个函数,该函数只打印这个值。但是,当我运行代码时,它会打印1而不是4。我在Ubuntu上运行64位,并且使用GCC编译 以下是大会: .extern myprint .text .global main main: push $4 call myprint mov $1, %eax int $0x80 下面是C
.extern myprint
.text
.global main
main:
push $4
call myprint
mov $1, %eax
int $0x80
下面是C中的函数:
#include <stdio.h>
int myprint(int n) {
printf("%d\n", n);
return 0;
}
#包括
int myprint(int n){
printf(“%d\n”,n);
返回0;
}
有什么错误?这是32位代码。确保您使用的是gcc-m32
@Jester好的,谢谢。您还知道如何将其更改为64位代码吗?或者甚至只需movl$4,%edi;jmp myprint
在这个简单的例子中:)@Jester好吧,太棒了。非常感谢。