1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| ; ecx devrait contenir le nombre d'arguments
pop rcx
cmp rcx,MAXARGS
ja fin
cmp rcx,0
jz ErrorNoParams
mov DWORD [ArgCount],ecx
xor edx,edx
recupererarguments:
; pop QWORD [ArgPtrs + edx*8] ; récupérer les arguments et les placer dans ArgPtrs
pop rsi
;sub rsp,8
mov rdi,ArgPtrs
; rsi contient la chaîne que l'on va copier
push rdx
push rcx
xor rcx,rcx
mov ecx,0000ffffh
cld
copierdatas:
lodsb ; va charger un byte de rsi et le mettre dans al
stosb ; on va mettre le caractère de al dans ArgPtrs
cmp al,0
jne copierdatas ; tant que '\0' pas trouvé on continue...
pop rcx
pop rdx
; ici j'ai des données correctes mais je n'arrive pas à faire un déplacement
; en mémoire du style C --> ArgPtrs[edx] (edx*8)
; la prochaine boucle va ECRASER le contenu de ArgPtrs :{
inc edx
mov ebp,[ArgPtrs+edx*8]
mov [ArgPtrs],ebp
cmp edx,ecx
jb recupererarguments
xor eax,eax
xor ebx,ebx |
Partager