Системный вызов или sysenter на 32-битном Linux?

С 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, но он падает так же.

Ответы на вопрос(2)

Ваш ответ на вопрос