Язык ассемблера выдачи разрешений на создание файлов - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь создать файл, используя системный вызов некоторых файловых операций в коде сборки Linux x86_64, но не могу получить правильные разрешения. Я пытаюсь установить разрешение 0777, которое каждый может читать, записывать и выполнять, но разрешения, которые я получаю для файла, отсутствуют для владельца, группы и других.

Что мне не хватает?

Используемый мной ассемблер - nasm.

%macro print 2
mov rax,1
mov rdi,0
mov rsi,%1
mov rdx,%2
syscall
%endmacro


section .data
    errmsg db "Incorrect argument count",10
    errmsglen equ $-errmsg

section .bss
    temp resb 8
    sourcefile resb 8

global _start

section .text

_start:
    pop rdx

    cmp rdx, 03h
    jne error

menu:

;------------Extract filename-------------

    pop rdx
    pop rdx

    mov rsi, sourcefile
    mov rax, [rdx]
    mov [rsi], rax

;------------Open File---------

    mov rax,85
    mov rdi,sourcefile
    mov rsi,2
    mov rdx,0777
    syscall

    jmp exit

error:
    print errmsg,errmsglen
    jmp exit

exit:
    mov rax,60
    mov rdi,0
    syscall

1 Ответ

2 голосов
/ 10 апреля 2019

Ведущий 0 не указывает восьмеричное в носу. Используйте 0o777 или 777o.

Как представить восьмеричные числа в сборке?

...