[英]Wrapper function for write() doesn't work as expected
给定系统调用write的包装函数:
ssize_t my_write(int fd, const void *buf, size_t count)
{
long __res;
__asm__ volatile
("int $0x80"
: "=a" (__res)
: "0" (4),"D" ((long)(fd)),"S" ((long)(buf)), "d" ((long)(count))
: "ebx","memory");
if (-125 <= __res && __res < 0)
{
errno = -__res;
__res = -1;
}
return __res;
}
我已经尝试了代码(来自int main()):
int main() {
my_write(2,"an read error occured\n",26);
return 0;
}
但是它不起作用。 知道为什么吗?
谢谢
您的约束已关闭,文件描述符需要放入EBX,ECX中的缓冲区(而不是像您分别的EDI / ESI)。
尝试:
__asm__ volatile
("int $0x80"
: "=a" (__res)
: "0" (4),"b" ((long)(fd)),"c" ((long)(buf)), "d" ((long)(count))
: "memory");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.