Executer une instruction native C, ASSEMBLEUR

Fermé
altivex11 - 7 juin 2005 à 21:43
 altivex11 - 9 juin 2005 à 19:34
Bonjour à tous,

un JITC (Just-In-Time Compiler) traduit des instructions en language bytecode (ex. JAVA ou MSIL du .NET) vers des instructions native du processeur (x86 par exemple).

Mais comment faire pour executer ("fetch") dynamiquement ces instructions x86 nouvellement crées par le JITC sans crée un fichier .EXE, ou ELF ?

Exemple : il y a un bytecode

IF X=0 THEN GOTO 2...

Qui serait traduit en assembleur par :

CMP [ZoneMemoireX], 0
JE 099h ; (autre segment du code)

Imaginons que le JITC stocke l'instruction traduite dans un tableau

//opcode 32bits pour x86 car sizeof(char)*4=8*4 =32
char InstructionsNative[NbInstructsProg][4]

Maintenant qu'est-ce que je pourrais faire pour dire au processeur
d'executer InstructionsNative[vProgramCounter] ?

merci

2 réponses

sam3000 Messages postés 1225 Date d'inscription mercredi 22 décembre 2004 Statut Membre Dernière intervention 13 juin 2005 144
7 juin 2005 à 22:34
salut,
et bien c'est pas comme ça que ça marche,
un tableau est stocké en segment de données. le problème, est que les systèmes récents (windows, linux, etc.. avec l'architecture X86) travaillent en mode protégé, qui n'authorise l'execution d'instructions que dans un segment de code.
si tu veux executer un code créer en temps réel, tu doit allouer de la mémoire en lecture/ecriture avec les droits d'execution (avec les fonctions bas niveau de l'OS sur lequel tu travaille) et tu lance ces instructions comme un nouveau thread de ton programme (appel inter-thread, aussi nécessite un appel de fonctions bas niveaux de ton OS)

dis nous ce que tu désire réaliser exactement, on pourra mieux t'aider.
@*
0
rebonjour :
mon but étais d'essayer de programmer un JITC (just in time compiler)...
0