Assembler: Linux Systemaufruf bricht mit Speicherzugriffsfehler ab

Antworten
Nachricht
Autor
FrankNFurter
Beiträge: 1
Registriert: 29. Sep 2006 12:10

Assembler: Linux Systemaufruf bricht mit Speicherzugriffsfehler ab

#1 Beitrag von FrankNFurter » 29. Sep 2006 14:47

Hallo zusammen,

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

Code: Alles auswählen

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: Alles auswählen

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!

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 29. Sep 2006 18:52

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.

Antworten