gpt4 book ai didi

c - 内联汇编错误 : unknown register name ‘%%ebx’ in ‘asm’

转载 作者:太空宇宙 更新时间:2023-11-04 01:12:08 31 4
gpt4 key购买 nike

我正在尝试创建 read() 包装器但收到此错误:

error: unknown register name ‘%%ebx’ in ‘asm’ in line 23 //(the bold line)

代码如下:

#include <sys/syscall.h>
typedef unsigned int size_t;
typedef signed ssize_t;

extern int errno;

int main(void) {
int fd = 0;
char buf[128];
size_t count = 128;
my_read(fd, buf, count);

return 0;
}

int my_read(int fd, void *buf, size_t count) {
long ret;

asm("pushl %%ebx\n\t" // Line 23
"movl %%esi,%%ebx\n\t"
"int $0x80\n\t"
"popl %%ebx"
: "=a" (ret)/* output */
: "0"(SYS_read), "S"((long) fd), "c"((long) buf), "d"((long) count)/* input */
: "%%ebx"/* clobbered register */
);
if (ret >= 0) {
return (int) ret;
}
errno = -ret;
return -1;
}

有人可以帮忙吗?

最佳答案

从被破坏的行中删除一个 %

: "%%ebx"/* clobbered register */
^

必须在所有其他行中保留它。

编辑

删除 extern int errno; 并包含 errno.h

关于c - 内联汇编错误 : unknown register name ‘%%ebx’ in ‘asm’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10137053/

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