gpt4 book ai didi

c - 如何嵌入内联汇编来调用 sys_unlink?

转载 作者:太空宇宙 更新时间:2023-11-04 05:46:13 26 4
gpt4 key购买 nike

我正在尝试使用内联汇编调用 sys_unlink,如下所示:

 int sys_unlink(const char *filename) {

int ret;

__asm__("int $0x80" : "=a"(ret) : "a"(10), "b"(filename));

return ret;

}

但它不起作用,它总是返回-14。

我想知道这段代码是否正确,因为我不太懂汇编。

最佳答案

该代码仅适用于 x86(32 位)进程 - 它没有为 x86-64 进程使用正确的系统调用编号。使用 asm/unistd.h 中的 __NR_unlink 而不是硬编码的 10:

#include <asm/unistd.h>

int sys_unlink(const char *filename)
{
int ret;

asm("int $0x80" : "=a"(ret) : "a"(__NR_unlink), "b"(filename));
return ret;
}

如果您正在编译一个 32 位进程,则 -14EFAULT,表示您传递的文件名有问题。你怎么调用它?

关于c - 如何嵌入内联汇编来调用 sys_unlink?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4572963/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com