\caption{Fichier \lstinline{svm/svm.c:1174}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_svm_virtualize}
\caption{Fichier \lstinline{svm/svm.c:1174}. Source : tiré du code source de Blue Pill, ref. URL06 / réalisé par RUTKOWSKA Joanna}\label{fig:code_svm_virtualize}
\end{figure}
\end{figure}
La routine \verb|SvmVmrun()|, illustré par la Figure~\ref{fig:code_asm_svm_vmrun},
La routine \verb|SvmVmrun()|, illustrée par la Figure~\ref{fig:code_asm_svm_vmrun},
quant à elle est séparée en plusieurs phases. La première consistera à allouer
quant à elle est séparée en plusieurs phases. La première consistera à allouer
suffisamment de place sur la pile pour pouvoir
suffisamment de place sur la pile pour pouvoir
stocker tous les registres de travaux de l'invité lorsque l'hyperviseur
stocker tous les registres de travaux de l'invité lorsque l'hyperviseur
reprendra la main sur l'exécution. Puis, la valeur de l'adresse physique
reprendra la main sur l'exécution. Puis, la valeur de l'adresse physique
stockée dans le champ \verb|VmcbToContinuePA| est fourni à l'instruction
stockée dans le champ \verb|VmcbToContinuePA| est fournie à l'instruction
\verb|svm_vmload| afin de charger l'état du \acrshort{cpu} stocké à l'adresse
\verb|svm_vmload| afin de charger l'état du \acrshort{cpu} stocké à l'adresse
de\acrshort{vmcb}. La troisième étape, se résume à une boucle qui va
du\acrshort{vmcb}. La troisième étape, se résume à une boucle qui va
continuellement exécuter l'instruction \verb|VMRUN| avec la même adresse
continuellement exécuter l'instruction \verb|VMRUN| avec la même adresse
physique du \acrshort{vmcb} mentionné précédemment. À partir de ce moment,
physique du \acrshort{vmcb} mentionnée précédemment. À partir de ce moment,
l'\acrshort{os} natif de la machine reprendra son exécution dans une
l'\acrshort{os} natif de la machine reprendra son exécution dans une