使用int 0x80附加文件(访问位?)

时间:2012-03-08 17:02:02

标签: assembly nasm

在我的NASM教科书中,Dandamundi的“Linux中汇编编程指南”,使用以下参数描述系统调用5(打开文件)。

EAX = 5
EBX = file name
ECX = file access mode (read, write, read/write)
EDX = file permissions

它没有说明访问代码(八进制,我假设)实际上是什么。假设0200Q和02000Q不起作用。我试图将一个文件的内容附加到另一个文件。

2 个答案:

答案 0 :(得分:0)

查看/usr/include/asm/unistd_32.h后,很明显系统号码5解析为open。反过来,查看man 2 open表示第二个参数必须包含O_RDONLY00),O_WRONLY01)或O_RDWR({ {1}})。它还可以通过将它们组合在一起来包含许多额外的标志,这些标志记录在所述手册页上。

在您的情况下,您可能希望能够写入文件并附加到该文件。因此,02是可取的。查看头文件后,该操作产生值O_WRONLY | O_APPEND,这是您应该放在02001寄存器中的内容。

答案 1 :(得分:0)

我认为这是sys_open系统调用,因此参数应该与open(2)一对一映射:

  

参数 flags 必须包含以下访问模式之一:   O_RDONLY,O_WRONLY或O_RDWR。这些请求打开文件   分别是只读,只写或读/写。另外,零   或更多文件创建标志和文件状态标志可以按位或按钮   在旗帜中。文件创建标志是O_CREAT,O_EXCL,O_NOCTTY和   O_TRUNC。 ...