2013-03-30 8 views
0

Mon problème est que je ne peux pas changer chaque morceaux de mon pointeurcaractère changement de chaîne

ma fonction a le même synopsis de memset

Je ne sais pas où je suis mal merci pour aider

void *changEachBits(void *, int , size_t) 

[BITS 64] 

global changEachBits 

section .text 

changEachBits: 
     push rbp 
     mov rbp, rsp 
     xor rcx, rcx 

cdn_loop: 
     cmp rcx, rdx 
     jz end 
     mov [rdi + rcx], rsi 
     inc rcx 
     jmp cdn_loop 
end: 
     mov rax, rcx 
     mov rsp, rbp 
     pop rbp 
     ret 
+0

quelle est la valeur de RDX dans l'entrée de fonction? pouvez-vous aussi nous éclairer sur l'intention de votre fonction? –

+0

Ma fonction a le même comportement que memset (3), alors RDX a une taille dedans. Est-ce que je réponds à votre question? – Atchoum

Répondre

1

Try mov byte [rdi + rcx], rsi Vous devez vérifier que les opcodes en effet émis traiter votre tableau en tant que tableau d'octets

+0

Sûrement pas "PTR" pour Nasm. Ne va pas assembler de toute façon. Peut-être 'sil'? –

+0

@Frank Kotler Thx pour votre commentaire!, J'ai édité ma réponse pour se conformer à la syntaxe NASM –

+0

J'essaie ce que vous avez dit, mais je ne peux pas 'mov byte [rdi], sil'. J'atteins une Segfault pendant les tests – Atchoum