begin process at 2010 02 09 21:08:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Processeurs

 > 

X86

 > 

[ASM] Allocation de memoire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[ASM] Allocation de memoire

lundi 20 avril 2009 à 14:26:49 | [ASM] Allocation de memoire

Ilsundal

Bonjour a tous,

je viens de recoder strcmp(char *, char *) en ASM, mais je me suis rendu compte que si les param sont en dur ou si c'est issu de chaine malloc, les resulta ne sont pas les meme :

ex :     strcmp("coucou", "Aouou") renvoie    -1
mais :

char *txt, txt2
txt = malloc(sizeof(*txt) * 20);
txt2 = malloc(sizeof(*txt2) * 20);
strcpy(txt, "coucouc");
strcpy(txt2,"Aouou");
strcmp(txt, txt2)  renvoie la difference en code ASCII  du caractere qui differe, ici il fait une soustraction entre 'c; et 'A'

Comment savoir sle param est issu d'une chaine en dur ou d'un malloc ??
Merci
____________________
Ma Quete n'est pas Terminee
lundi 20 avril 2009 à 14:50:32 | Re : [ASM] Allocation de memoire

Ilsundal

Edit : ma fonction fonctionne sur les chaine en dur (strcmp("sa", "sa"))  mais pavec les dynamique (strcmp(t1, t2)), WTF?? lool. je comprend pas.

==== CODE ASM ====
section .text
        global  _strcmp

_strcmp:
        mov     edi,            [esp + 4]       ; ARGU. 1 DANS EDI (CHAR * DESTINATION)
        mov     esi,            [esp + 8]       ; ARGU. 2 DANS ESI (CHAR * SOURCE)

_loop:
        cmp     edi,            esi             ; COMPARE EDI ET ESI : Whouhouuu !
        jne     _not                            ; SI PAS EGALE ON SE CASSE

        inc     esi                             ; INCREMENTE ESI
        inc     edi                             ; INCREMENT EDI

        cmp     edi,    0                       ; TEST SI ECX == 0
        jne     _end                            ; ALORS SE BARRER
        cmp     esi,    0                       ; TEST SI ESI EST EN FIN DE CHAINE
        je      _end                            ; ALORS SE CASSER

        jmp     _loop                           ; SINON ON REFAIT UN TOUR DE MANEGE

_not:
        mov     eax,            -1              ; PARAM DE RETOUR
        ret

_end:
        mov     eax,            0               ; PARAM DE RETOUR
        ret

____________________
Ma Quete n'est pas Terminee
mardi 21 avril 2009 à 19:27:28 | Re : [ASM] Allocation de memoire

BruNews

Administrateur CodeS-SourceS

_strcmp:
  mov     edi, [esp + 4]  ; ARGU. 1 DANS EDI (CHAR * DESTINATION)
  mov     esi, [esp + 8]  ; ARGU. 2 DANS ESI (CHAR * SOURCE)
_loop:
  cmp     edi, esi             ; COMPARE EDI ET ESI : Whouhouuu !
  jne     _not

C'est pas les memes adresses alors pas les memes chaines ???
Mais c'est nimporte quoi !!!

Ce qui est à comparer, ce sont les chaines qui démarrent aux 2 adresses.
Allez hop tu te remets au boulot en réfléchissant à ce que j'ai dit à la ligne au dessus.
Fais voir l'effort produit et on corrigera si besoin.

ciao...
BruNews, MVP VC++

mardi 21 avril 2009 à 19:44:11 | Re : [ASM] Allocation de memoire

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !

Tant pis, je fais pendant que j'ai le temps...

Je fais en mode __fastcall, tu adapteras si tu tiens au __stdcall mais c'est moins bon.

bnStrcmp PROC ; ECX = char *psza, RDX = char *pszb
  mov       [esp-4], ebx
  xor       eax, eax
  xor       ebx, ebx
nextCHR:
  mov       al, [ecx]
  mov       bl, [edx]
  add       ecx, 1
  sub       eax, ebx
  jne       short strEXIT
  add       edx, 1
  test      bl, bl
  jne       short nextCHR
strEXIT:
  mov       ebx, [esp-4]
  ret       0
bnStrcmp ENDP

ciao...
BruNews, MVP VC++



Cette discussion est classée dans : txt, asm, strcmp, malloc, txt2


Répondre à ce message

Sujets en rapport avec ce message

Compileur ASM [ par fabiin ] SalutQuel compileur ASM me conseillez-vous ???Merci @+Fabs Besoin de conseils en livre sur l'asm! [ par BlackWizzard ] je voudrais m'acheter un livre sur l'asm sans trop de blabla et pas trop cher...qqun a qqchose a me conseiller? virgule flotante en asm [ par webfish ] Bonjour, Je fais de l'assembleur depuis pas longtemps, et j'aimerais savoir comment on fait des calculs avec des nombres à virgule flotante... asm [ par damien174 ] bonjour je viens de commencer a faire de l ASM sur PC, car je connais tres bien sur 68HC11.Avez vous des cours et un logiciel pour assembler et compil ASM pour 68hc11 [ par Sphaxs ] SphaxsSalut tout le monde,J'ai fait une plaque de test pour utiliser un 68hc11 mais je n'arrive pas à le programmer (pb de logiciel???), si quelqu'un passage de paramétres entre VCpp et ASM [ par orchis ] bjr a tous,j'ai ecris un programme en VCpp dont un module est en assembleur, mais je ne sais faire passer des paramétres entre les deux !! pourriez vo Routine asm dans gcc [ par Juke ] quelqu'un connait t'il un txt en francais qui explik comment incorporer de l'asm dans du c++ avec gcc ou dev-c++ ? Reboot de la machine en c/c++ ou asm [ par Juke ] quelqu'un sait t'il comment rebooter ou éteindre l'ordinateur en c/c++ ou en asm ?merci de votre aide.juke objets ASM [ par gblade ] est ce que qqun saurait comment exporter des membres statics d'une classe ecrite en ASM ? je sais faire avec les membres virtuels mais pas les statics Cherche développeurs asm pour OS [ par Shinji ] Salut, je cherche des gens intéressés par le développement d'un système d'exploitation sur x86 en asm (pour commencer).J'essaie seul pour le moment et


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales