В настоящее время я изучаю язык ассемблера в Linux. Я использую книгу "Программирование с нуля" , а все примеры - 32-битные. Моя ОС 64-разрядная, и я пытаюсь сделать все примеры в 64-разрядной версии. У меня возникают проблемы:
.section .data
.section .text
.global _start
_start:
movq $60, %rax
movq $2, %rbx
int $0x80
Это просто просто вызывает системный вызов выхода Linux или он должен. Вместо этого он вызывает SEG FAULT, и когда я вместо этого делаю это
.section .data
.section .text
.global _start
_start:
movq $1, %rax
movq $2, %rbx
int $0x80
он работает. Ясно, что проблема заключается в том, что я перехожу к% rax. Значение $1, которое я использую во втором примере, - это то, что "Программирование с нуля" говорит, что использование нескольких источников в Интернете говорит о том, что 64-битный системный номер вызова составляет 60 долларов. Ссылка Что я делаю не так? И какие еще вопросы я должен отслеживать и что я должен использовать для ссылки? На всякий случай вам нужно знать, что я нахожусь в главе 5 "Программирование с нуля" .