Я прочитал документ об инструкции CLFLUSH для машины Intel x86. Я понимаю, что CLFLUSH m8
означает очистку строки кэша, содержащей линейный адрес m8, если я запускаю инструкцию внутри модуля Linux на «голом железе».
Однако что, если я хочу запустить инструкцию внутри виртуальной машины в среде виртуализации? Что такое параметр CLFLUSH
? Чтобы быть конкретным, предположим, что я хочу очистить строку кеша, содержащую контент для виртуального адреса va
программы на виртуальной машине. Виртуальный адрес va
отображается на физический адрес pa
в виртуальной машине, а pa
будет сопоставлен с машинным адресом ma
в VMM / гипервизоре. Какой адрес использовать для CLFLUSH
инструкции, va
, pa
или ma
?
Большое спасибо!
wrfsbase
. Само значение сегмента register (селектор) не является базовым, поэтому использование словарной базы исключает это. Кроме того, никто не использует значения сегментных регистров для чего-либо, обычно оставляя их0
(нулевой селектор) в 64-битном режиме, даже не создавая для них запись в GDT. 16.11.2020