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