Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 从x86向C函数传递参数_Assembly_X86 - Fatal编程技术网

Assembly 从x86向C函数传递参数

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

我正在学习汇编,我很难理解这段代码的错误。我试图将一个值(本例中为4)传递给C中的一个函数,该函数只打印这个值。但是,当我运行代码时,它会打印1而不是4。我在Ubuntu上运行64位,并且使用GCC编译

以下是大会:

.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好吧,太棒了。非常感谢。