如何在 Linux 程序集中创建文件

How to create a file in Linux assembly

我有以下代码:

section .text
    global _start       ;must be declared for using gcc
_start:                     ;tell linker entry point
    mov ecx, 2      ;read-write perms
    mov ebx, name       ;name of file
    mov eax, 8      ;system call number (sys_creat)
    int 0x80        ;call kernel
    mov eax, 1      ;system call number (sys_exit)
    int 0x80        ;call kernel

section .data
name    db  'C:\test.txt',0xa  

本来是想在C盘创建一个文件(test.txt)但是不行,请问正确的做法是什么?

首先,syscall=8是sys_creat,不写。

但找出正在发生的事情的最简单方法是查看程序的 strace 输出。在那里你可以看到系统调用是否成功,如果没有,错误值是多少。 (错误号)

Afaik creat(2) 不再使用了,现在使用在第二个参数中带有 O_CREAT 的 Open(2)。