MS-DOS以来、割り込みを使用したシステム呼び出しを知っています。古い論文では、int 80h
Linuxでシステム関数を呼び出すための参照を見ました。かなり長い間、私は命令int 80h
を支持して非推奨になっていることを知っています。syscall
しかし、32ビットマシンでは動作しません。
質問
命令はsyscall
64ビットプラットフォームでのみ使用されますか?32ビットLinuxは利用しませんsyscall
か?
サンプルテスト
私の32ビットLinux(Ubuntu Precise)では、このプログラムはコアダンプで終了します。
global _start
_start:
mov eax, 4 ; 4 is write
mov ebx, 1 ; 1 is stdout
mov ecx, message ; address of string
mov edx, length ; number of bytes
syscall
mov eax, 1 ; 1 is exit
xor ebx, ebx ; return code 0
syscall
message:
db 10,"Hello, World",10,10
length equ $ - message
sysenter
の代わりに試してみましsyscall
たが、同じようにクラッシュします。