Я тестировал некоторый код в Visual Studio 2008 и заметил security_cookie
. Я могу понять суть этого, но я не понимаю, какова цель этой инструкции.
rep ret /* REP to avoid AMD branch prediction penalty */
Конечно, я могу понять комментарий:), но что это за префикс exaclty в контексте с ret
, и что произойдет, если ecx
is!= 0? По-видимому, количество циклов из ecx
игнорируется, когда я его отлаживаю, что и следовало ожидать.
Код, где я нашел это, был здесь (введенный компилятором для обеспечения безопасности):
void __declspec(naked) __fastcall __security_check_cookie(UINT_PTR cookie)
{
/* x86 version written in asm to preserve all regs */
__asm {
cmp ecx, __security_cookie
jne failure
rep ret /* REP to avoid AMD branch prediction penalty */
failure:
jmp __report_gsfailure
}
}