VMCALL은 SYSENTER 명령어와 매우 유사합니다. SYSENTER는 시스템 호출 (OS 로의 빠른 전환)을위한 방법과 달리 VMCALL은 하이퍼 콜용입니다 (하이퍼 바이저로 전환).x86에서 VMCALL 명령어가 게스트 CPU 상태를 저장합니까?
내 질문에 SYSENTER는 CPU 상태를 저장하지 않지만 VMCALL에도 동일하게 적용됩니다. VMCALL을 실행하면 VM 종료가 발생하지만 게스트 CPU 상태를 관련 VMCS 구조에 저장할지 여부는 확실하지 않습니다.
CPU 상태를 저장하면 하이퍼 콜에서 인수를 얼마나 정확하게 전달할 수 있습니까?
의미가 있습니다. 소프트웨어에 레지스터 저장/복원을 남겨 두는 것이 사물을 설계하는 분명한 방법입니다. 그렇지 않으면 레지스터 저장 영역을 가리 키도록 제어 레지스터가 필요합니다. 그래서'vmcall'을 사용하는 것은'syscall'을 사용하는 것과 같습니다; 당신은 당신이 부르는 ABI를 알아야합니다. –
VM 종료가 레지스터 상태를 저장합니까? Intel 수동 VMCS 게스트 영역의 일반 레지스터 필드를 찾을 수 없습니다. – qstack
@qstack VMM 자체에서 수행해야합니다. 덕분에 – RostakaGmfun