executable
; Создаем файл
mov rax, 2
mov rdi, filename_path
mov rsi, 0100
mov rdx, 0777o
syscall
; Открываем файл
mov rax, 2
mov rdi, filename_path
mov rsi, 02000
syscall
; Записываем в файл
mov rax, 1
mov rdi, 1
mov rsi, buf
mov rdx, size
syscall
; Закрываем файл
mov rax, 3
mov rdi, 1
syscall
; Завершение программы
mov rax, 60
mov rdi, 0
syscall
segment readable writeable
filename_path db '/home/vasutinvaceslav13/mylikedfile.txt'
buf db "Welcome to 64 bit Linux! What's up?"
size = $-buf
И он создал мне файл под названием
'mylikedfile.txtWelcome to 64 bit Linux! What'\''s up?'... Что не так?
Нуль-терминатор - творит чудеса! Нуль-терминатор - ставь везде и всегда!
Вот так? format ELF64 executable segment readable writeable executable ; Создаем файл mov rax, 2 mov rdi, filename_path mov rsi, 0100 mov rdx, 0777o syscall ; Открываем файл mov rax, 2 mov rdi, filename_path mov rsi, 02000 syscall ; Записываем в файл mov rax, 1 mov rdi, 1 mov rsi, buf mov rdx, size syscall ; Закрываем файл mov rax, 3 mov rdi, 1 syscall ; Завершение программы mov rax, 60 mov rdi, 0 syscall segment readable writeable filename_path db '/home/vasutinvaceslav13/mylikedfile.txt',0 buf db "Welcome to 64 bit Linux! What's up?",0 size = $-buf
Не так. Когда ты делаешь write, линукс может узнать, где сообщение кончилось, потому что ты размер передаёшь. И поэтому нолик на конце строки не нужен. Но хороший тон поставить 10, оно же \n в Си.
Теперь снова, он создал мне два файла, вместо того, чтобы 1) создвать файл; 2) записать сообщение в файл;
Не надо создавать файл, а потом открывать. Когда ты его создаёшь, тебе уже дают дескриптор.
Обсуждают сегодня