系统调用GAS

时间:2015-05-07 07:35:16

标签: assembly system-calls gas

我试图在64位GNU中创建一个文件夹,如下所示:

newstring

此代码有效,但我宁愿使用" int 0x80"来实现它。打电话,但我似乎无法让它发挥作用,我已经尝试过这样:

.global main

.text
main:
    movl $83, %edi      # SYS_mkdir
    movl $folder, %esi  # folder_name
    movl $0777, %edx    # flags
    call syscall

    ret                 # exit
folder: .string "folder"

然而,即使我使用64位寄存器,它也不起作用。

另外我怎么能把这个代码翻译成32位? (最好使用int 0x80)

1 个答案:

答案 0 :(得分:0)

在64位语法中,你必须使用这样的系统调用:

mov $folder, %rdi
mov $0777, %rsi
mov $83, %rax
syscall

在32位中你要做的就是用32位替换寄存器并使用int 0x80而不是syscall