我尝试通过 sys_write 系统调用(到标准输出或文件)进行二进制写入,但我只能有文本文件。如何也有无文本(二进制)字节?
"mov %eax, %ebx;"
"mov $4, %eax;"
"mov -0x40(%rbp), %ecx;"
"mov $14, %edx;"
"int $0x80;"
尝试使用此示例,如果它们不是文本字节,则无法写入 14 个字节(非文本字节的文件长度为 0!)。
最佳答案
我不确定你的问题是什么。只要您在 %edx
中传递正确的长度,sys_write
就会将缓冲区中的任何值写入 %ebx
中的文件描述符。这包括 0 到 255 范围内的任何值(即完整字节范围)。
也许您也应该发布用于打开文件的代码。但即使您以文本模式打开文件,向其中写入仍然可以使用任何值。
更多的想法可以看看:你刷新输出了吗?你关闭文件吗?如果不这样做,那么该字符串可能仍卡在缓冲区中等待刷新。
关于c - 如何用汇编程序将二进制数据写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2005004/