【发布时间】:2019-04-27 15:47:36
【问题描述】:
我在搞乱 nasm,在没有问题地打了个招呼之后,我想尝试做一些 c 集成。
我正在使用 c 打开一个文件,然后我想使用为打开的文件返回的指针来处理文本。但是,当我使用 rdi 中的指针调用 fgetc 时,我得到一个“没有这样的文件或目录”,然后是一个段错误。
我做错了什么?
int64_t asmFunc(FILE* a, char* b);
int main()
{
int num;
FILE *fptr;
size_t line_buf_size = 0;
char *ret = malloc(100);
fptr = fopen("./test.txt","r");
if(fptr == NULL)
{
printf("Error!");
exit(1);
}
printf("%ld", asmFunc(fptr, ret));
return 0;
}
global asmFunc
section .text
extern fgetc
asmFunc:
call fgetc ; segfault occurs here.
(...)
ret
【问题讨论】:
-
请在您的问题中提供一些minimal reproducible example(包括
asmFunc的真实和完整代码)。没有一个就不清楚了 -
查看用于编译和运行程序的命令也会很有帮助。当我尝试构建和运行您的程序时(在添加缺少的标头之后),我得到一个动态链接器错误。
标签: c linux assembly x86-64 nasm