Все про Assembler українською мовою на сайті net.kr.ua

 

:: Меню ::

Головна
Введення
Архітектура реального режиму
Основи програмування
Команди і алгоритми
Розширені можливості сучасних мікропроцесорів
Система команд процесорів Intel
Книга для гостей
Контакти
Добавити у вибране

:: Друзі ::

 
 

:: Лічильники ::

=

 

 

 

 

fff00e50

Чому Segmentation fault? Допоможіть знайти помилку у програмі GNU Assembler x64 Linux

Петро Пивоварів
Чому Segmentation fault? Допоможіть знайти помилку у програмі GNU Assembler x64 Linux
.global _start .text _start: call write31 call writeSpace call write18 call writeSpace call write79 call writeLineend # exit(0) mov $60, %rax xor %rdi, %rdi syscall write: # write(1, %rsi, % $1, %rdi mov $1, %rax mov %rcx,%r9 syscall mov %r9,%rcx loop write ret writeLineend: mov $1,%rcx mov $lineend, %rsi mov $1,%rdx call write write31: mov $2, %rdx mov $1, %rcx mov $_31, %rsi call write writeSpace: mov $2,%rdx mov $2, %rcx mov $space, %rsi call write write18: mov $2,%rdx mov $1, %rcx mov $_18 , %rsi call write write79: mov $2, %rdx mov $1, %rcx mov $_79, %rsi call write _31: .byte 0x33,0x31 _18: .byte 0x31,0x38 _79: .byte 0x 0x00,0x20 lineend: .byte 0x0A Повинно вивести 31 18 79



Відповіді:

дід Мазай
Напиши програму на Сі. Відкомпілюй з оптимізацією за розміром коду. У відладчику дивись дизассембльований код, скопіюй його звідти, вивчай і змінюй. Або дивись у налагоджувачі, в якому рядку відбувається помилка. Дивно, що в кінці написано call write, а далі немає коду.




:: Наша кнопка ::

Отримати код:

Підтримайте наш сайт і розмістіть нашу кнопку на своєму ресурсі.


:: Популярне ::

-


:: Посилання ::

-


 

 

 


Copyright © net.kr.ua, 2019-2025 (assem.us)