我正在尝试创建 read() 包装器但收到此错误:
错误:第 23 行的 'asm' 中的未知寄存器名称 '%%ebx' //(粗线)
这是代码:
#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;
}
有人可以帮忙吗?