Executer une instruction native C, ASSEMBLEUR
altivex11
-
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
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
A voir également:
- Executer une instruction native C, ASSEMBLEUR
- Executer .sh ✓ - Forum Shell
- Assembleur - Forum Assembleur
- Resolution native - Forum Matériel & Système
- Ajoutez une instruction pour faire afficher le mot secret construit. ✓ - Forum Python
- Afficher un message sur python "" ✓ - Forum Python
2 réponses
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.
@*
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.
@*