我正在尝试学习一些汇编。我要做的就是声明一个带有输入和输出字符串作为参数的外部c函数,并通过汇编对其进行修改。据我所知,数组总是通过引用传递的。这是一个c示例:
extern int mod_array(char input[], char output[]);
char input[SIZE]={'0','1','1','0','1'};
char output[SIZE]={'x','x','x','x','x'};
mod_array(input, output);
所以我在想获取地址并修改内存空间会起作用。这是一个组装件
.data
label: .string "s"
.text
.global mod_array
mod_array:
pushl %ebp #setup
movl %esp, %ebp #setup
movl 12(%ebp), %edx #fetching the address of the output array
movl label, (%edx) #moving label to the pointed space (first char of array)
#error
popl %ebp #setup
ret
汇编器产生错误。 “太多参考为mov”。 现在我不明白问题是否出在我使用的变量标签上,也许是因为它没有1B的尺寸,或者这是一个sintax问题。 我使用的寻址模式不存在吗?
以为是正确的,如果我能够修改汇编中指向的内存空间,那么c main也会看到更改吗?
谢谢