Executer une instruction native C, ASSEMBLEUR

altivex11 -  
 altivex11 -
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 1226 Statut Membre 144
 
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
altivex11
 
rebonjour :
mon but étais d'essayer de programmer un JITC (just in time compiler)...
0