void X86Context::CopyContextTo(uintptr_t* gprs, uintptr_t* fprs) { #ifdefined(__i386__) // Array of GPR values, filled from the context backward for the long jump pop. We add a slot at // the top for the stack pointer that doesn't get popped in a pop-all. for (size_t i = 0; i < kNumberOfCpuRegisters; ++i) {
gprs[kNumberOfCpuRegisters - i - 1] = (gprs_[i] != nullptr) ? *gprs_[i] : (kBadGprBase + i);
} for (size_t i = 0; i < kNumberOfFloatRegisters; ++i) {
fprs[i] = fprs_[i] != nullptr ? *fprs_[i] : kBadFprBase + i;
} // We want to load the stack pointer one slot below so that the ret will pop eip.
uintptr_t esp = gprs[kNumberOfCpuRegisters - ESP - 1] - sizeof(intptr_t);
gprs[kNumberOfCpuRegisters] = esp;
*(reinterpret_cast<uintptr_t*>(esp)) = eip_; #else
UNIMPLEMENTED(FATAL); #endif
}
} // namespace x86
} // namespace art
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-06-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.