Executer binaire dans registre

Résolu/Fermé
Utilisateur anonyme - Modifié par astrocurieux le 11/04/2015 à 10:48
 Utilisateur anonyme - 13 avril 2015 à 12:37
Bonjour,

je bloque totalement sur un principe assez tordue ...
je reçoit un fichier qui comporte des instruction en assembleur .
je le traduit en base binaire dans un fichier au format .cor
ce fichier doit par la suite être interprété et exécuter dans des registres .
et c'est justement la ou je bloque !

comment, a partir d'un binaire je peut interpréter des instruction d'assembleur en binaire ?
puis comment les intégrer dans un registre ?

besoin de votre aide de toute urgence je n'est plus beaucoup de temps devant moi ....


2 réponses

Salut, qu'ententu par register ? Je connait pas de register sous Linux

Quel est ton but ? executer un programme binaire venant d'un programme asm ?
Je crois que tu doit passer par le shell: ./programme.cor (ton programme)

(\___/)
(='.'=)
(")_(")

This is Bunny. Copy and paste bunny into...
...your signature to help him gain world domination
0
Utilisateur anonyme
11 avril 2015 à 12:39
je cherche a ce que mes instruction qui était en asm pour ensuite être traduit en binaire soit reconnue comme tel puis exécuter !

pour ce faire je doit parvenir a découper mon binaire de sorte que mes instruction soit gérer l'une après l'autre dans des registres ( mémoire rapide )

ps : désoler des fautes je suis dyslexique !
0
Utilisateur anonyme > Utilisateur anonyme
Modifié par shaynox le 11/04/2015 à 12:52
Pas de problème, ah donc ce sont les register du CPU dont tu parle (rax, rbx, ..)

La plus simple méthode pour transformer des instructions asm en binaire c'est de passer par un assembleur comme le fameux https://nasm.us/ :p

Ensuite seulement tu pourras l'éxécuter son ton Linux via ./ Tu travaille bien sous Linux ?

Et pour le faite que les instruction transformée en binaire soit reconnue par le CPU, ne t'en fait pas pour ça, d'ailleurs c'est quoi ton cpu, intel amd ?

IL ne faut pas s'en faire, car une instruction asm reconnue par le cpu, serat forcément éxecutée par le CPU, comme un simple: mov rax, 2


Instruction assembleur = mnemonic (keyword) d'opcode (ecriteur binaire plus souvent représentée par une ecriture hexadecimal 0xDEADBEEF ^^)
0
Utilisateur anonyme
11 avril 2015 à 12:50
j'ai déjà coder mon assembleur qui fonctionne bien ( du moins sa en a l'air ... )

comment faire pour l'exécuter sous Linux ? ( je suis sous Blinux )
a partir d'un autre programme en c bien entendue !

merci de ton aide ;-)
0
Utilisateur anonyme > Utilisateur anonyme
Modifié par shaynox le 11/04/2015 à 13:00
Il faut que tu fasse ./ je crois, dans le shell, après je suis pas un pro de Linux, je suis sous windows, désolé :p

No problem ^^
0
Utilisateur anonyme
11 avril 2015 à 13:32
je crains que ce ne soit pas suffisant ...
merci quand même de ta rapidité de réponses
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
11 avril 2015 à 20:54
'lut, la seule chose qu'on intègre dans un registre, c'est un entier, de 32 ou 64 bits généralement.
L'exécution du code dépend de 2 facteurs: l'architecture CPU hôte et du jeu d'instruction du fichier reçu. Si les deux sont égaux, on peut, avec la nécessité de connaître parfaitement l'assembleur pour cette architecture faire tourner le code: il faut prendre un nombre énorme de précautions (register clobbering et autres inconvénients d'une machine à état) et pouvoir s'assurer que le code n'est pas malveillant.
Sinon, il faut l'interpréter (Virtual Machine) ou le convertir (AOT/JIT), sachant que ce dernier est dur a faire.
0
Utilisateur anonyme
13 avril 2015 à 12:37
merci de votre aide !
malheureusement il est déjà trop tard ...
0