在我的NASM教科书中,Dandamundi的“Linux中汇编编程指南”,使用以下参数描述系统调用5(打开文件)。
EAX = 5
EBX = file name
ECX = file access mode (read, write, read/write)
EDX = file permissions
它没有说明访问代码(八进制,我假设)实际上是什么。假设0200Q和02000Q不起作用。我试图将一个文件的内容附加到另一个文件。
答案 0 :(得分:0)
查看/usr/include/asm/unistd_32.h
后,很明显系统号码5解析为open
。反过来,查看man 2 open
表示第二个参数必须包含O_RDONLY
(00
),O_WRONLY
(01
)或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。 ...