Результаты поиска по запросу "x86"

1 ответ

, но он поддерживает другие встроенные функции в моем коде.

тирую следующую простую функцию

2 ответа

Linux x86 NASM - Подпрограмма: распечатать слово от EAX

Так что я'я изучаю сборку Linux x86 с синтаксисом NASM (О боже, не это снова, вы'все думают) Я'Я пытаюсь создать подпрограмму, которая будет прос...

2 ответа

вау спасибо за отличный пост Я прочитаю это и изменю это соответственно. (:

аюсь использовать cmpxchg со встроенной сборкой через c. Это мой код: static inline int cas(volatile void* addr, int expected, int newval) { int ret; asm volatile("movl %2 , %%eax\n\t" "lock; cmpxchg %0, %3\n\t" "pushfl\n\t" "popl %1\n\t" "and ...

ТОП публикаций

1 ответ

добавление нескольких слов с использованием флага переноса

4 ответа

Почему IA32 не позволяет памяти перемещаться в память mov?

В архитектуре Intel IA32 такие инструкции, как movl, movw, не разрешают операнды, которые являются обеими ячейками памяти. Например, инструкция movl (% eax),...

5 ответов

Когда мы должны использовать предварительную выборку?

Некоторые CPU и компиляторы предоставляют инструкции предварительной выборки. Например: __builtin_prefetch вДокумент GCC, Хотя в GCC есть комментарийдокумент...

1 ответ

Как инструкции по обнаружению конфликтов облегчают векторизацию циклов?

Семейства команд AVX512CD: VPCONFLICT, VPLZCNT и VPBROADCASTM.Раздел Википедии об этих инструкциях говорит:Инструкции в AVX-512 обнаружении конфликтов (AVX-5...

0 ответов

@IwillnotexistIdonotexist: Хорошо заметили. Я думаю, это означает, что вы можете получить одну широкую запись MMIO для смежных немаскированных элементов или две узкие. Но выполнение одного выровненного 8-байтового атомарного хранилища все же дает атомарность для 4-байтовых половинок, хотя для MMIO это не так. Поэтому я не думаю, что это исключает атомарность для каждого элемента, потому что специфичная для реализации часть может быть только объединением хранилищ элементов в более широкие и все еще атомарные хранилища.

отрим массив какatomic<int32_t> shared_array[], Что делать, если вы хотите SIMD векторизацииfor(...) sum += shared_array[i].load(memory_order_relaxed)?. Или искать в массиве первый ненулевой элемент или обнулять его диапазон? Это, вероятно, ...

2 ответа

L2 - это ДЕВЯТЬ, это общий L3, который входит в состав Intel начиная с Nehalem. Таким образом, выселение потенциально может быть вызвано давлением со стороны других ядерных структур.

у вас есть 64-байтовый буфер, который интенсивно читается / записывается, то, вероятно, он будет сохранен в L1; но есть ли способ заставить это поведение? Например, предоставьте одному ядру монопольный доступ к этим 64 байтам и запретите им ...

4 ответа

Оптимизация программы для конвейера в процессорах семейства Intel Sandybridge

Я целую неделю ломал голову, пытаясь выполнить это задание, и надеюсь, что кто-то здесь может привести меня к правильному пути. Позвольте мне начать с инструкций инструктора: Ваше задание является противоположностью нашему первому ...