Articles of assembly

Combien de cycles de processeur sont nécessaires pour chaque instruction d’assemblage?

J’ai entendu dire qu’il existe un livre en ligne Intel qui décrit les cycles de CPU nécessaires pour une instruction d’assemblage spécifique, mais je ne peux pas le trouver (après avoir essayé fort). Quelqu’un pourrait-il me montrer comment trouver le cycle du processeur s’il vous plaît? Voici un exemple, dans le code ci-dessous, mov / […]

Différence entre rdtscp, rdtsc: mémoire et cpuid / rdtsc?

Supposons que nous essayons d’utiliser le tsc pour la surveillance des performances et nous voulons empêcher le réordonnancement des instructions. Ce sont nos options: 1: rdtscp est un appel de sérialisation. Il empêche la réorganisation autour de l’appel à rdtscp. __asm__ __volatile__(“rdtscp; ” // serializing read of tsc “shl $32,%%rdx; ” // shift higher 32 […]

x86_64 enregistre rax / eax / ax / al en écrasant le contenu du registre complet

Comme il est largement annoncé, les processeurs x86_64 modernes ont des registres 64 bits qui peuvent être utilisés en mode rétrocompatible comme les registres 32 bits, les registres 16 bits et même les registres 8 bits, par exemple: 0x1122334455667788 ================ rax (64 bits) ======== eax (32 bits) ==== ax (16 bits) == ah (8 bits) […]

Pourquoi gcc est-il autorisé à charger de manière spéculative à partir d’une structure?

Exemple montrant l’optimisation gcc et le code utilisateur pouvant être défaillant La fonction ‘foo’ dans l’extrait de code ci-dessous ne chargera qu’un des membres de la structure A ou B; eh bien au moins c’est l’intention du code non optimisé. typedef struct { int A; int B; } Pair; int foo(const Pair *P, int c) […]

Que sont SP (stack) et LR dans ARM?

Je lis les définitions encore et encore et je ne comprends toujours pas ce que sont SP et LR dans ARM? Je comprends PC (il montre l’adresse de l’instruction suivante), SP et LR sont probablement similaires, mais je ne comprends pas ce que c’est. Pourrais-tu m’aider s’il te plaît? edit: si vous pouviez l’expliquer avec […]

Pourquoi la construction de std :: optional est-elle plus chère qu’une std :: pair ?

Considérons ces deux approches qui peuvent représenter un ” int optionnel”: using std_optional_int = std::optional; using my_optional_int = std::pair; Compte tenu de ces deux fonctions … auto get_std_optional_int() -> std_optional_int { return {42}; } auto get_my_optional() -> my_optional_int { return {42, true}; } … le trunk et le clang ++ de g ++ (avec -std=c++17 […]

Point final de transport n’est pas connecté

FUSE est constamment (tous les 2 à 3 jours) ce qui me donne ce Transport endpoint is not connected erreur sur mon sharepoint assembly et la seule chose qui semble le réparer est le redémarrage. J’ai actuellement ma configuration de points de assembly comme celle-ci, je ne suis pas sûr de savoir quels autres détails […]

Comment voir le code compilé par JIT dans JVM?

Existe-t-il un moyen de voir le code natif produit par JIT dans une JVM?

Pourquoi ce programme C ++ est-il incroyablement rapide?

J’ai écrit un petit benchmark pour comparer les performances de différents interpréteurs / compilateurs pour Python, Ruby, JavaScript et C ++. Comme prévu, il s’avère que C ++ (optimisé) bat les langages de script, mais le facteur par lequel il le fait est incroyablement élevé. Les résultats sont les suivants: sven@jet:~/tmp/js$ time node bla.js # […]

int opérateurs! = et == quand on compare à zéro

J’ai trouvé que! = Et == ne sont pas les moyens les plus rapides pour tester zéro ou non nul. bool nonZero1 = integer != 0; xor eax, eax test ecx, ecx setne al bool nonZero2 = integer 0; test ecx, ecx setne al bool zero1 = integer == 0; xor eax, eax test ecx, […]