xor eax, eax
всегда будет устанавливать eax
в ноль, не так ли? Итак, почему MSVC++ иногда помещает его в код моего исполняемого файла? Является ли более эффективным то, что mov eax, 0
?Какова цель XORing регистрации с собой?
012B1002 in al,dx
012B1003 push ecx
int i = 5;
012B1004 mov dword ptr [i],5
return 0;
012B100B xor eax,eax
Также, что делать in al, dx
?
это очень маловероятно, что MSVC++ компилятор действительно испускает команду «in». Вероятно, вы разобрались с неправильным адресом/неправильным выравниванием. – newgre
Я просто использую дизассемблер в режиме отладки. –
Да, настоящие инструкции начинаются на несколько байт раньше. Не существует С-эквивалента инструкции «in» и чтения из 16-битного порта ввода-вывода и перезаписывания результата несколько инструкций позже является очень маловероятной сгенерированной последовательностью команд. – hirschhornsalz