Assembleur 80x86 | VMRUN |
---|---|
AMD-V | Run Virtual Machine |
Syntaxe
VMRUN RAX |
Description
Cette instruction permet de lancer l'exécution d'un flux d'instructions invité.
Algorithme
SI ((MSR_EFER.SVME = 0) OU (!PROTECTED_MODE)) ALORS EXCEPTION #UD() FIN SI SI CPL ≠ 0 ALORS EXCEPTION #GP() FIN SI SI RAX contient un adresse physique non supporté ALORS EXCEPTION #GP() FIN SI SI interception (VMRUN) ALORS #VMEXIT (VMRUN) FIN SI Mémorise l'adresse VMCB fournit dans RAX pour le prochain #VMEXIT Sauvegarde l'état de l'hôte à l'adresse mémoire physique indiquer dans le VM_HSAVE_PA MSR: ES.sel, CS.sel, SS.sel, DS.sel, GDTR.{base,limit}, IDTR.{base,limit}, EFER, CR0, CR4, CR3, RFLAGS, VMRUN, RIP, RSP, RAX Charge les informations de contrôle VMCB de l'adresse physique contient dans le registre RAX: vecteur d'interception, TSC_OFFSET contrôle d'interruption (v_irq, v_intr_*, v_tpr), EVENTINJ champ, ASID SI page supporté ALORS NP_ENABLE SI NP_ENABLE = 1 ALORS nCR3 FIN SI FIN SI Charge l'état d'invité VMCB de l'adresse physique RAX: ES.{base,limit,attr,sel}, CS.{base,limit,attr,sel}, SS.{base,limit,attr,sel}, DS.{base,limit,attr,sel}, GDTR.{base,limit}, IDTR.{base,limit}, EFER, CR0, CR4, CR3, CR2 SI NP_ENABLE = 1 ALORS Charge également gPAT, RFLAGS, RIP, RSP, RAX, DR7, DR6, CPL FIN SI INTERRUPT_SHADOW SI LBR virtualisation supporté ALORS LBR_VIRTUALIZATION_ENABLE SI LBR_VIRTUALIZATION_ENABLE = 1 ALORS Sauvegarde l'état LBR dans la région de l'hôte sauvegardé: DBGCTL, BR_FROM, BR_TO, LASTEXCP_FROM, LASTEXCP_TO Charge l'état LBR du VMCB: DBGCTL, BR_FROM, BR_TO, LASTEXCP_FROM, LASTEXCP_TO FIN SI SI état invité consiste en un échec de vérification ALORS #VMEXIT(INVALID) FIN SI Exécute une commande entreposé dans TLB_CONTROL GIF ← 1 SI EVENTINJ.V ALORS EXCEPTION Interruption dans l'invité SINON Saut à la prochaine instruction invité FIN SI #VMEXIT: GIF ← 0 Sauvaregarde l'état invité du VMCB: ES.{base,limit,attr,sel}, CS.{base,limit,attr,sel}, SS.{base,limit,attr,sel}, DS.{base,limit,attr,sel}, GDTR.{base,limit}, IDTR.{base,limit}, EFER, CR4, CR3, CR2, CR0 SI pagination activé ALORS Sauvegarde également gPAT, RFLAGS, RIP, RSP, RAX, DR7, DR6, CPL, INTERRUPT_SHADOW FIN SI Sauvegarde l'état additionnel et interception les informations: V_IRQ, V_TPR, EXITCODE, EXITINFO1, EXITINFO2, EXITINTINFO Efface le champ EVENTINJ dans le VMCB Prépare pour le mode hôte par effacement interne des bits d'état du microprocesseur: efface l'interception, v_irq, v_intr_masking et tsc_offset, désactive la pagination, ASID ← 0 Recharge l'état de l'hôte: GDTR.{base,limit}, IDTR.{base,limit}, EFER, CR0, CR0.PE ← 1, CR4, CR3 SI hôte dans le mode de pagination PAE ALORS Recharge l'hôte PDPEs FIN SI Charge également RFLAGS, RIP, RSP, RAX, DR7 ← tous désactivé, CPL ← 0 Recharge ES.sel du descripteur de segment GDT Recharge CS.sel du descripteur de segment GDT Recharge SS.sel du descripteur de segment GDT Recharge DS.sel du descripteur de segment GDT SI virtualisation LBR supporté ALORS LBR_VIRTUALIZATION_ENABLE SI LBR_VIRTUALIZATION_ENABLE = 1 ALORS Sauvegarde l'état LBR du VMCB: DBGCTL, BR_FROM, BR_TO, LASTEXCP_FROM, LASTEXCP_TO Charge l'état LBR state de l'état de la région de sauvegarde: DBGCTL, BR_FROM, BR_TO, LASTEXCP_FROM, LASTEXCP_TO SI chargement illégale de l'état de l'hôte OU exception du l'état de l'hôte ALORS Redémarrage du microprocesseur SINON Exécute la première instruction de l'hôte suivant l'instruction VMRUN FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
VMRUN RAX | 0Fh 01h D8h | Cette instruction permet de lancer l'exécution d'un flux d'instructions invité. |
Voir également
Articles - Virtualisation
Instruction assembleur 80x86 - Instruction VMLOAD
Instruction assembleur 80x86 - Instruction VMSAVE
Dernière mise à jour : Samedi, le 2 août 2014