gpt4 book ai didi

linux汇编语言创建目录

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:30:57 25 4
gpt4 key购买 nike

我正在尝试创建一个小型汇编程序来创建一个文件夹。我查找了在 this page 上创建目录的系统调用.它说它是由 27h 标识的。我将如何在汇编中实现 mkdir somename

我知道该程序应该将 27 移到 eax 中,但我不确定下一步该去哪里。我在谷歌上搜索了很多,似乎没有人在网上发布过关于这个的帖子。

这是我当前的代码(我不知道在哪个寄存器中放置文件名等):

section .data

section .text
global _start

mov eax, 27
mov ????????
....
int 80h

谢谢

最佳答案

找出答案的一种方法是使用 GCC 翻译以下 C 代码:

#include <stdio.h>
#include <sys/stat.h>

int main()
{
if (mkdir("testdir", 0777) != 0)
{
return -1;
}

return 0;
}

汇编,使用:gcc mkdir.c -S

    .file   "mkdir.c"
.section .rodata
.LC0:
.string "testdir"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5
andl $-16, %esp
subl $16, %esp
movl $511, 4(%esp)
movl $.LC0, (%esp)
call mkdir ; interesting call
testl %eax, %eax
setne %al
testb %al, %al
je .L2
movl $-1, %eax
jmp .L3
.L2:
movl $0, %eax
.L3:
leave
.cfi_restore 5
.cfi_def_cfa 4, 4
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (GNU) 4.5.1 20100924 (Red Hat 4.5.1-4)"
.section .note.GNU-stack,"",@progbits

无论如何,ProgrammingGroundUp第 272 页列出了重要的系统调用,包括 mkdir:

%eax   Name    %ebx                 %ecx       %edx    Notes
------------------------------------------------------------------
39 mkdir NULL terminated Permission Creates the given
directory name directory. Assumes all
directories leading up
to it already exist.

关于linux汇编语言创建目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com