equation314 / equation314/RVM-Tutorial

cr_is_valid是否存在问题?

Offen
#6 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug
Vorherrschende Sprache
Rust
Sterne
161
Forks
36
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

```Rust
// Check control registers are in a VMX-friendly state. (SDM Vol. 3C, Appendix A.7, A.8) /
macro_rules! cr_is_valid {
($value: expr, $crx: ident) => {{
use Msr::*;
let value = $value;
let fixed0 = concat_idents!(IA32_VMX_, $crx, _FIXED0).read();
let fixed1 = concat_idents!(IA32_VMX_, $crx, _FIXED1).read();
(!fixed0 | value != 0) && (fixed1 | !value != 0)
}};
}
```

函数最终返回` (!fixed0 | value != 0) && (fixed1 | !value != 0)`,
但是根据手册,FIXED0应该是所在位为1的,寄存器所在位也为1;
FIXED1应该是所在位为0的,寄存器所在位也为0,
判断结果应该写为(value & fixed0 == fixed0) && (value & !fixed1 == 0)才对吧。
不过这样就无法通过检查了。
我看其他开源项目是,先有一个调整寄存器值的操作。

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne mit dem im Issue gezeigten Makro cr_is_valid! und vergleiche dessen Prädikat mit SDM Vol. 3C, Anhänge A.7 und A.8. Verfolge die für FIXED0 und FIXED1 bereitgestellten Werte und vergleiche anschließend die Prüfung mit dem im Issue erwähnten Registeranpassungsansatz. Als abgeschlossen gilt die Aufgabe, wenn erklärt wird, ob das Prädikat korrekt ist, und die erforderliche Änderung identifiziert wird, falls dies nicht der Fall ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
rust
Bereich
operating-systems
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.