私は現在、Linuxでアセンブリ言語を学んでいます。私は「ProgrammingFromtheGround Up」という本を使用してきましたが、すべての例は32ビットです。私のOSは64ビットで、すべての例を64ビットで実行しようとしています。しかし、私は問題を抱えています:
.section .data
.section .text
.global _start
_start:
movq $60, %rax
movq $2, %rbx
int $0x80
これは単にLinuxのexitSystem呼び出しを呼び出すだけであるか、そうすべきです。代わりに、SEG FAULTが発生し、代わりにこれを行うと
.section .data
.section .text
.global _start
_start:
movq $1, %rax
movq $2, %rbx
int $0x80
できます。明らかに問題は、%raxに移動する値です。2番目の例で使用する値$1は、「Programming From the Ground Up」が使用すると言ったものですが、インターネット上の複数のソースによると、64ビットのシステムコール番号は$60です。参照 私は何が間違っているのですか?また、他にどのような問題に注意する必要があり、参照用に何を使用する必要がありますか?あなたが知る必要がある場合に備えて、私はゼロからのプログラミングの第5章にいます。