将字符串作为参数传递到x86-64中的函数中

时间:2015-10-03 18:14:03

标签: c assembly

所以,我有一个字符串,我需要传递给x86-64汇编代码中的函数。把它想象成c就像这样:

char str[] = "Abcdef"

void fun(char *str)

我该怎么办?我应该将每个字符作为等效的十六进制值传递给reg吗?我不知道该怎么做。

1 个答案:

答案 0 :(得分:4)

好吧,你的原型说明了一切 - 你没有传递一个字符串到函数,你传递一个指针。所以字符串需要在某个地方的内存中,并将该内存的地址放入参数寄存器中。在汇编代码中,这看起来像:

# declare a data segment object containg the string
    .data
str:
    .string "Abcdef"

# code to call fun(char *) with the string:
    .text
    movq $str, %rdi
    call fun