1.1k Aufrufe
Gefragt in Anwendungen(Java,C++...) von
Hallo!

Ich experimentiere gerade ein wenig mit Assembler und wollte mich auch in die lowlevels sozusagen einlesen. Also kam ich auf die Idee, ein Assemblerprogramm zu schreiben, welches ohne externe C-Aufrufe einen Syscall von Linux nutzt. Um genau zu sein sys_rename.

GLOBAL _start
segment .data ; Ignorieren, nur der Vollständigkeit halber

segment .rodata
LOLDNAME dd "a.x", 0
LNEWNAME dd "b.y", 0

segment .bss ; Genauso

segment .text
_start:
mov ecx, LNEWNAME
mov ebx, LOLDNAME
mov eax, 0x26
int 0x80


0x26 für sys_rename und 0x80 für den Syscall an sich. Laut dieser schönen Seite:
http://syscalls.kernelgrok.com/
ist ebx der alte und eax der neue Name.
Nun, es funktioniert sogar ;) Nur kommt trotzdem
Speicherzugriffsfehler (Speicherabzug geschrieben)

Nun meine Fragen:
1. Wieso?
2. Wie siehts mit Unicode(UTF-8 aus? Das scheint mir ja erstmal ASCII/Codepage 437 zu sein ;)

Danke und Grüße

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...