Syscall oder Sysenter unter 32-Bit-Linux?

Seit MS-DOS kenne ich den Systemaufruf mit Interrupts. In alten Zeitungen sah ich Verweis aufint 80h, um Systemfunktionen unter Linux aufzurufen. Ich weiß schon ziemlich lange,int 80h ist veraltet zu Gunsten dessyscall Anweisung. Aber ich kann es auf meinem 32-Bit-Rechner nicht zum Laufen bringen.

Die Frag

Ist dersyscall -Anweisung, die nur auf 64-Bit-Plattformen verwendet werden soll? 32-Bit-Linux nutzt nichtsyscall?

Ein Beispieltest

Auf meinem 32-Bit-Linux (Ubuntu Precise) endet dieses Programm mit einem Core-Dump:

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

Ich habe es mit @ versucsysenter anstattsyscall, aber es stürzt auf die gleiche Weise ab.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage