VMCALL очень похож на инструкцию SYSENTER, отличающуюся тем, что SYSENTER предназначен для системного вызова (быстрый переход к ОС), в то время как VMCALL для гиперкадров (переход на гипервизор).Выполняет ли VMCALL-инструкцию в x86 сохранение состояния гостевого процессора
Вопрос в том, что, хотя SYSENTER не сохраняет состояние CPU, то же самое относится к VMCALL. Выдача VMCALL вызывает выход VM, но я не уверен, сохраняет ли он состояние гостевого процессора в связанной структуре VMCS или нет?
Если он сохраняет состояние процессора, то как именно мы можем передавать аргументы в гиперколле?
Это имеет смысл; оставляя регистр save/restore для программного обеспечения, является очевидным способом разработки вещей. В противном случае вам понадобится регистр управления, чтобы указать на область сохранения регистров и тому подобное. Поэтому использование 'vmcall' очень похоже на использование' syscall'; вы должны знать ABI, который вы вызываете. –
Выполняет ли выход VM выход из состояния регистрации? Я не мог найти никаких полей для регулярных регистров в гостевой области VMCS в руководстве Intel. – qstack
@qstack. Думаю, это должно быть сделано самим VMM. – RostakaGmfun