На мой вопрос, когда я пытался создать пример NASM под 64-разрядной версией ubuntu и выполнить его после сборки и связывания с ELF. Он возвращает сообщения об ошибках, как показано ниже, когда я выполняю
NASM -f elf64 -o firstasm.o firstasm.asm ld -o firstasm firstasm.o firstasm
Ошибка сегментации (дамп ядра)
Мой код NASM будет ниже, где я пытался выполнить простые функции write () и exit ().
section .data ;Data segment
msg db "This line is test", 0x0a
section .text ;text segment
global _start ;Default entry point for ELF linking
_start:
; SYSCALL : write (1,msg,14)
xor rax,rax
xor rbx,rbx
xor rcx,rcx
xor rdx,rdx
mov rax,64 ; make a syscall write 4
mov rbx,1 ; put 1 into rbx and also stdout is 1
mov rcx,msg ;put address of string in rcx
mov rdx,19 ; put length of string into rdx
int 0x80 ; call kernel to made syscall
; SYSCALL : exit(0)
xor rax,rax
xor rbx,rbx
mov rax,93 ; make a syscall exit 93
mov rbx, 0 ; store 0 argument into rbx, success to exit
int 0x80
Может ли кто-нибудь указать мне, в чем проблема с моим кодом NASM, и предложения по устранению проблемы «Ошибка сегментации (дамп ядра)». Благодарю всех, кто может помочь.