Assembler: Linux Systemaufruf bricht mit Speicherzugriffsfehler ab

Post Reply
Message
Author
FrankNFurter
Posts: 1
Joined: 29. Sep 2006 12:10

Assembler: Linux Systemaufruf bricht mit Speicherzugriffsfehler ab

#1 Post by FrankNFurter »

Hallo zusammen,

wer kann mir erklären, warum folgendes, winziges Assembler-Programm mit einem Speicherzugriffsfehler abbricht:

Code: Select all

section .text
     global _start

_start:
     mov eax,1
     mov ebx,0
     int 0x80
Eigentlich sollte hier ja nur exit() aufgerufen werden. Bei folgender Version funktioniert das einwandfrei:

Code: Select all

section  .data
     hurz: db 'XYZ'

section .text
     global _start

_start:
     mov eax,1
     mov ebx,0
     int 0x80
Ohne zumindest ein Byte in der Data-Section zu haben will er nicht!

Das ganze mit nasm -f elf assembliert (Version 0.98.39) und mit ld unter SuSE 10.0 gelinkt.

Danke schonmal!

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

Es ist Linux-Aufrufkonvention, eine .data-Sektion zu haben. Dort werden beispielsweise das Environment und die Aufrufparameter des Prozesses abgelegt. Existiert das Symbol nicht, schlägt das Kopieren fehl.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Post Reply