no save
Assistance
Achat
News

Forum | programmation
[Asm x86] Tableau de chaines de caractère
kilian, le lun. 19 sept. 2005 à 13:01:45
Merci pour ta réponse.
Donc c'est bien comme ça que je pensais faire.

A savoir créer plusieurs pointeurs vers des chaines précises.
Puis créer un tableau qui contient ces pointeurs.

Le soucis c'est que je ne sais pas comment allouer de la mémoire en asm à partir d'un pointeur. Et je ne sais pas non plus comment créer un tableau.

Par contre avec l'exemple que j'ai mis dans mon premier message, on peut créer directement une chaine de caractère (donc je suppose que la memoire est allouée à la volée pour cette chaine, et que l'adresse de la chaine est transmise au nom de la chaine).

A priori, je doit utiliser des chaines se terminant par '\0' comme en c.
J'utilise nasm sous Linux, en fait je t'explique plus en détail:
Je fais un appel système vers le kernel (int 80h). Et précisément un appel qui produit l'equivalent de exerve() en c.
http://www.lxhp.in-berlin.de/lhpsysc1.html#execve

Par exemple j'essaie de lancer le lecteur mplayer:
segment .data
commande db "/usr/local/bin/mplayer",0

segment .text
global _start

_start:
mov ebx, dword commande ; ebx pointe vers commande
mov eax, 11 ; execve()
mov ecx, 0 ; Pointeur vers les arguments (ne pointe sur rien)
mov edx, 0 ; Ne sais pas quoi mettre...
int 80h ; appel du kernel

mov eax,1 ; exit()
mov ebx,0 ; exit(0)
int 80h ; appel du kernel
Et j'ai aucun soucis, mplayer se lance.
Le soucis c'est de lui passer un argument.
Dans le registre ecx, je dois passer un pointeur vers une liste de pointeurs se référant aux arguments du programme. Et c'est donc là que ça coince. Apparement, le pointeur doit faire référence à un tableau de pointeurs (si j'ai bien compris, le dernier pointeur de la liste doit être 0), et ces chaines de caractères doivent être formattées comme en c (terminés par '\0').
Précédentsebsauvage
sept. 05
sebsauvage
sept. 05
Suivant
REPONSES
sebsauvage
sept. 05
sebsauvage
sept. 05
kilian
sept. 05
sebsauvage
sept. 05
kilian
sept. 05
kilian
sept. 05
beriocha
mai 07
foufou.hadile@gmail.com
nov. 08
kilian
nov. 08
foufou.hadile@gmail.com
nov. 08
Version Web
Réalisé par RedShift
no save