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