156 votes

Une raison de faire un « xor eax, eax » ?

sera toujours la valeur à zéro, à droite ? Alors, pourquoi MSVC ++ parfois le mettre dans le code de l’exécutable ? Il est plus efficace que `` ?

En outre, ce que cela signifie de faire `` ?

195voto

hirschhornsalz Points 16306

Oui, il est plus efficace.

L’opcode est inférieure à , seulement 2 octets et le processeur reconnaît le cas particulier et le traite comme un sans un faux lire dépendance sur `` , donc le temps d’exécution est le même.

34voto

kripto_ash Points 535

Aussi pour éviter le 0 s lorsqu’il est compilé comme utilisé sur les codes de shell pour l’exploitation des débordements de tampon, etc... Pourquoi éviter le 0 ? Eh bien, 0 représente la fin de la chaîne en c / c ++ et le code shell pourrait être tronqué si la moyenne d’exploitation est une chaîne de traitement fonction ou similaires.

BTW im se référant à la question initiale : « Toute raison de faire un « xor eax, eax » ? » pas ce que fait le compilateur MSVC ++.

20voto

jeffamaphone Points 31732

xor eax, eax est un moyen plus rapide de réglage de l' eax à zéro. Ce qui se passe parce que vous êtes de retour à zéro.

L' in enseignement est de faire des trucs avec I/O ports. Fondamentalement, la lecture d'un mot de données à partir du port spécifié dx dans et de les stocker en al. Il n'est pas clair pourquoi il se passe ici. Voici une référence qui semble l'expliquer en détail.

0voto

Quonux Points 2166

Une autre raison d’utiliser ou est de briser la dépendance chaînes, cela permet à la CPU optimiser l’exécution en parallèle des commandes Assemblée plus efficacement (même elle elle ajoute quelques preasure plus de débit d’instructions).

-6voto

rio22 Points 1

XOR est souvent utilisée pour chiffrer un code par exemple

L’instruction XOR relie deux valeurs à l’aide de la logique exclusive ou se rappeler ou utilisations inclus ou à mieux comprendre le XOR envisager ces deux valeurs binaires :

Si vous ou eux, le résultat est 1100011011 lorsque les deux bits sur l’autre sont égales, le bit résultant est 0. Sinon, le bit résultant est 1. Vous pouvez utiliser calc.exe pour calculer XOR.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X