Récupérer des valeurs en mémoire [Assembleur]
TheFatalError
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
TheFatalError Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
TheFatalError Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
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]
- Recuperer message whatsapp supprimé - Guide
- Mémoire vive - Guide
- Récupérer mon compte facebook désactivé - Guide
- Comment récupérer un compte facebook piraté - 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...