Récupérer des valeurs en mémoire [Assembleur]
TheFatalError
Messages postés
2
Statut
Membre
-
TheFatalError Messages postés 2 Statut Membre -
TheFatalError Messages postés 2 Statut Membre -
Bonjour à tous,
Je débute en assembleur. Je voulais explorer un peu le sujet et faire un petit fizzbuzz pour commencer dans ce langage, histoire de me faire la main. Ceci dit, je souhaite le faire en TDD. Mais, je n'ai pas trouvé de framework en assembleur. Alors, j'ai décidé d'en faire un, un très basique qui vérifie les égalités via un assertEqual.
Alors, je suis sous Linux et utilise Nasm. Architecture x86, 64bits, syntaxe Intel.
Mon problème c'est que dans mon fichier FizzBuzz.asm j'entre deux valeurs via push (j'ai aussi essayé en utilisant mov) que je voudrais vérifier dans le fichier AUnit.asm via un call assertEqual. Mais je n'arrive pas à récupérer mes valeurs entrés dans le fichier FizzBuzz (push 1 et push 1) pour les faire passer dans ma boucle dans AUnit.
Mon fichier AUnit se présente comme ça :
Bon, le code fonctionne mais avec des valeurs en "dur", ici 1 et 1 qui vérifie l'égalité.
Je souhaite pouvoir récupérer ces valeurs à partir du fichier FizzBuzz. Mais j'arrive pas à connecter les deux. J'ai essayé de jouer avec les registres et la pile en vain. Voilà, je m'en remets à vous car je tourne en rond.
Pour avoir une idée de mon fichier FizzBuzz :
Je débute en assembleur. Je voulais explorer un peu le sujet et faire un petit fizzbuzz pour commencer dans ce langage, histoire de me faire la main. Ceci dit, je souhaite le faire en TDD. Mais, je n'ai pas trouvé de framework en assembleur. Alors, j'ai décidé d'en faire un, un très basique qui vérifie les égalités via un assertEqual.
Alors, je suis sous Linux et utilise Nasm. Architecture x86, 64bits, syntaxe Intel.
Mon problème c'est que dans mon fichier FizzBuzz.asm j'entre deux valeurs via push (j'ai aussi essayé en utilisant mov) que je voudrais vérifier dans le fichier AUnit.asm via un call assertEqual. Mais je n'arrive pas à récupérer mes valeurs entrés dans le fichier FizzBuzz (push 1 et push 1) pour les faire passer dans ma boucle dans AUnit.
Mon fichier AUnit se présente comme ça :
segment .text
global main
segment .data
msg_green: db "Passed", 10
size_green: equ $ - msg_green
msg_red: db "Failed", 10
size_red: equ $ - msg_red
main:
assertEqual:
mov rax, 1
mov rbx, 1
loop:
cmp rax, rbx
je found
jne notfound
found:
mov rax, 4
mov rbx, 1
mov rcx, msg_green
mov rdx, size_green
int 80h
jmp exit
notfound:
mov rax, 4
mov rbx, 1
mov rcx, msg_red
mov rdx, size_red
int 80h
exit:
mov rax, 1
mov rbx, 0
int 80h
Bon, le code fonctionne mais avec des valeurs en "dur", ici 1 et 1 qui vérifie l'égalité.
Je souhaite pouvoir récupérer ces valeurs à partir du fichier FizzBuzz. Mais j'arrive pas à connecter les deux. J'ai essayé de jouer avec les registres et la pile en vain. Voilà, je m'en remets à vous car je tourne en rond.
Pour avoir une idée de mon fichier FizzBuzz :
%include "AUnit.asm"
segment .text
global main
_main:
test_truth:
push 1
push 1
call assertEqual
mov rax, 1
mov rbx, 0
int 80h
A voir également:
- Récupérer des valeurs en mémoire [Assembleur]
- Mémoire vive - Guide
- Recuperer message whatsapp supprimé - Guide
- RAM : type, format, CAS, vitesse, tout sur la mémoire vive - Guide
- Récupérer mon compte facebook désactivé - Guide
- Comment recuperer une video sur youtube - Guide
1 réponse
Pourquoi lorsque j'essaie de récupérer la valeur dans la pile ça ne fonctionne pas ?
Fichier AUNit
Fichier FizzBuzz
Je ne vois pas vraiment pas comment faire...
Fichier AUNit
assertEqual:
mov rax, [rsp+4]
mov rbx, [rsp+8]
Fichier FizzBuzz
%include "AUnit.asm"
segment .text
global main
_main:
test_truth:
push 1
push 1
call assertEqual
add rsp, 8
mov rax, 1
mov rbx, 0
int 80h
Je ne vois pas vraiment pas comment faire...