如何在 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)。
我有以下代码:
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)。