preguntar acerca de x86

2
réponses

Langage d’assemblage — Comment faire Modulo?

Y a-t-il quelque chose comme un modulo-opérateur dans L'assembleur x86? ... …
demandé sur 1970-01-01 00:33:31
3
réponses

Comment les registres fs/gs sont-ils utilisés dans Linux AMD64?

Sur l'architecture x86-64, deux registres ont un but particulier: FS et GS. Dans linux 2.6.* , le registre FS semble être utilisé pour stocker des informations thread-local. Est-ce exact? Qu'est-ce qui est stocké à fs: 0? Y a-t-il une structure C …
demandé sur 1970-01-01 00:33:31
4
réponses

Que signifie le signe dollar ($) dans l’assemblage x86 lors du calcul des longueurs de chaîne comme «$ — label»? [dupliquer]

Cette question a déjà une réponse ici: Comment $ fonctionne-t-il dans NASM, exactement? 1 réponse Par exemple, si nous écrivions un programme de type hello …
demandé sur 1970-01-01 00:33:32
1
réponses

Comment fonctionnent exactement les registres partiels sur Haswell/Skylake? Écrire AL semble avoir une fausse dépendance sur RAX, et AH est incohérent

Cette boucle s'exécute à une itération par 3 cycles sur Intel Conroe / Merom, goulot d'étranglement sur le débit imul comme prévu. Mais sur Haswell / Skylake, il s'exécute à une itération par 11 cycles, apparemment parce que {[2] } a une dépendance …
demandé sur 1970-01-01 00:33:37
7
réponses

Quelles sont les causes des défauts de page?

Selon Wikipedia: Une erreur de page est un piège au logiciel déclenché par le matériel lorsqu'un programme accède à une page qui est mappée dans l'espace d'adressage virtuel, mais pas chargée dans la mémoire physique . (l'emphase est mienne) O …
demandé sur 1970-01-01 00:33:31
5
réponses

Spinlock de montage en ligne Le plus rapide

J'écris une application multithread en C++, où les performances sont critiques. J'ai besoin d'une grande quantité de verrouillage lors de la copie de petites structures entre les threads, pour cela j'ai choisi d'utiliser des spinlocks. J'ai fait des …
demandé sur 1970-01-01 00:33:32
3
réponses

Condition de course sur x86

Quelqu'un Pourrait-il expliquer cette déclaration: shared variables x = 0, y = 0 Core 1 Core 2 x = 1; y = 1; r1 = y; r2 = x; Comment est-il possible d'avoir r1 == 0 et r2 == 0 sur des processeurs x86? Source "le langage de la c …
demandé sur 1970-01-01 00:33:31
5
réponses

Performances relatives des verrous swap vs compare-and-swap sur x86

Deux idiomes de verrouillage communs sont: if (!atomic_swap(lockaddr, 1)) /* got the lock */ Et: if (!atomic_compare_and_swap(lockaddr, 0, val)) /* got the lock */ Où val pourrait simplement être une constante ou un identificateur pour le nouv …
demandé sur 1970-01-01 00:33:31
1
réponses

Cycles perdus sur Intel? Une incohérence entre rdtsc et CPU CLK UNHALTED.REF TSC

Sur les processeurs récents (au moins la dernière décennie) Intel a offert trois compteurs de performance matérielle à fonction fixe, en plus de divers compteurs de performance configurables. Les trois compteurs fixes sont: INST_RETIRED.ANY CPU_CLK …
demandé sur 1970-01-01 00:33:37
3
réponses

Comment faire pour que GCC génère des instructions bswap pour big endian store sans builtins?

je travaille sur une fonction qui stocke une valeur 64 bits en mémoire au format big endian. J'espérais que je pourrais écrire portable C99 code qui fonctionne à la fois peu et big endian plates-formes et que les compilateurs x86 modernes génèrent un …
demandé sur 1970-01-01 00:33:36