所以,我有一个字符串,我需要传递给x86-64汇编代码中的函数。把它想象成c就像这样:
char str[] = "Abcdef"
void fun(char *str)
我该怎么办?我应该将每个字符作为等效的十六进制值传递给reg吗?我不知道该怎么做。
答案 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