Для моего вопроса, когда я попытался создать пример NASM в 64-разрядной версии Ubuntu и выполнить его после сборки и соединения в ELF. Это возвращать сообщения об ошибках, как показано ниже, когда я исполняюСегментация Неисправность простого кода ASM
NASM -f elf64 -o firstasm.o firstasm.asm л.д. -o firstasm firstasm.o firstasm
вина Сегментация (основной сбрасывали)
Мой NASM код будет ниже, где я пытался выполнить простую запись() и функция выхода()
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
Может кто-то указал мне, что проблема в моей NA SM и предложения по устранению проблемы «Ошибка сегментации (сбрасывание ядра)». Благодарим всех, кто может помочь.
Спасибо Gunner за помощь, но я обнаружил, что «syscall» не работает на 64-битном компьютере (x86_64) ubuntu. Можете ли вы указать мне, как использовать его? – user1884888
Что означает «Не работает»? Покажите, как настроить параметры и использовать 'syscall' – Gunner