equation314 / equation314/RVM-Tutorial
cr_is_valid是否存在问题?
- 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