Нарушение сегмента со сборщиком x86-64

В этой программе в сборщике, последуй, за тем, что, сделав команды, чтобы создавать файл .lst и .o он не дает мне никакой проблемы, только загрузив программу с ./programa у меня появляется сообщение

нарушение сегмента ('core произведенный')

Моя операционная система - ubuntu 13.04 64 бита

section.data
EXIT_success equ 0
SYS_exit equ 60
bNum1 db 3
bNum2 db 6
bAns1 db 0
section.text
global _start
_start:
mov al, byte [bNum1]
add al, byte [bNum2]
mov byte [bAns1], al
last:
mov rax, SYS_exit
mov rdi, EXIT_success
syscall
2
задан 24.03.2017, 16:22
1 ответ

Ты не был бы должен требовать привилегий администратора, чтобы выполнять код, такой простой как этот. Может быть ты делал что-то плохим в течение фазы компиляции или поколения выполнимого.

Я помещаю тебе, как я воспроизвел твою ошибку (твой код как он я не позволял себе составлять):

bits 64
section .data
EXIT_success equ 0
SYS_exit equ 60
bNum1 db 3
bNum2 db 6
bAns1 db 0
section .text
global main
main:
mov al, byte [bNum1]
add al, byte [bNum2]
mov byte [bAns1], al
last:
mov rax, SYS_exit
mov rdi, EXIT_success
syscall

Потом я составляю с nasm -f elf64 pr.asm и я произвожу выполнимого с gcc pr.o -o pr.

В конце концов я выполняю все с:

$ ./pr ; echo $?
0

А следовательно ты можешь видеть, что меня не производит никакой coredump ни ничто из-за стиля. Если я меняю линию EXIT_success equ 1 я получаю (как он состоит в том, чтобы ждать):

$ ./pr ; echo $?
1

А следовательно твоя проблема должна быть другой.

Конечно, иногда, когда что-то функционирует как root и не как пользователь: он, потому что ты пробуешь соглашаться на зону памяти, в которую ты не был бы должен!!

Забота с использованием указателей или непрямой адресации, и т.д., ты мог бы разлагать твою систему, если ты не контролируешь, куда руководили твоими данными.

Как общая норма помнит, что, если что-то функционирует, как root, но не как пользователь, он, потому что ты делаешь что-то плохим.

Приветствие.

1
ответ дан 24.11.2019, 13:18
  • 1
    Большое спасибо! я хочу сказать тебе, что если ví твой ответ в этом моменте, но я едва отвечаю. Спасибо, всерьез! – Leonardo Herrera Ornelas 03.03.2018, 18:59

Теги

Похожие вопросы