Вопросы с тегом «x86»

x86 - это архитектура, производная от процессора Intel 8086. Семейство x86 включает 32-битные архитектуры IA-32 и 64-битные x86-64, а также унаследованные 16-битные архитектуры. Вопросы о последнем должны быть помечены тегами [x86-16] и / или [emu8086]. Используйте тег [x86-64], если ваш вопрос относится к 64-битной x86-64. Для FPU x86 используйте тег [x87]. Для SSE1 / 2/3/4 / AVX * также используйте [sse] и любой из [avx] / [avx2] / [avx512], который применяется

1424
Замена 32-разрядного счетчика циклов на 64-разрядный вводит сумасшедшие отклонения производительности с _mm_popcnt_u64 на процессорах Intel

Я искал самый быстрый способ для popcountбольших массивов данных. Я обнаружил очень странное действие: Изменение переменного цикла из unsignedк uint64_tвысказанному падению производительности на 50% по сравнению с ПК. Бенчмарк #include <iostream> #include <chrono> #include...

833
Код C ++ для проверки гипотезы Коллатца быстрее, чем рукописная сборка - почему?

Я написал эти два решения для Project Euler Q14 , в сборке и на C ++. Это один и тот же метод грубой силы для проверки гипотезы Коллатца . Решение для сборки было собрано с nasm -felf64 p14.asm && gcc p14.o -o p14 C ++ был скомпилирован с g++ p14.cpp -o p14 Ассамблея, p14.asm section .data...

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

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

289
Как скомпилировать Tensorflow с инструкциями SSE4.2 и AVX?

Это сообщение получено от запуска скрипта, чтобы проверить, работает ли Tensorflow: I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcublas.so.8.0 locally I tensorflow/stream_executor/dso_loader.cc:125] successfully opened CUDA library libcudnn.so.5 locally I...

244
Что такое ретполин и как он работает?

Для предотвращения раскрытия памяти в ядре или в межпроцессном режиме ( атака Spectre ) ядро Linux 1 будет скомпилировано с новой опцией , -mindirect-branch=thunk-externвведенной gccдля выполнения косвенных вызовов через так называемый retpoline . Похоже, что это новый изобретенный термин,...

243
Как выглядит многоядерный язык ассемблера?

Давным-давно, например, для написания ассемблера x86, вы должны будете получить инструкции о том, что «загрузить регистр EDX со значением 5», «увеличить регистр EDX» и т. Д. С современными процессорами, которые имеют 4 ядра (или даже больше), на уровне машинного кода это просто выглядит так, как...

239
Как запустить программу без операционной системы?

Как вы запускаете программу самостоятельно без операционной системы? Можете ли вы создавать программы сборки, которые компьютер может загружать и запускать при запуске, например, загружать компьютер с флэш-накопителя, и он запускает программу, которая находится на...

225
Что такое базовый указатель и указатель стека? На что они указывают?

Используя этот пример из Википедии, в которой DrawSquare () вызывает DrawLine (), (Обратите внимание, что эта диаграмма имеет высокие адреса внизу и низкие адреса вверху.) Может ли кто-нибудь объяснить мне, что ebpи espв этом контексте? Из того, что я вижу, я бы сказал, что указатель стека всегда...

192
Чем архитектура ARM отличается от архитектуры x86? [закрыто]

Закрыто. Этот вопрос не соответствует рекомендациям по переполнению стека . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме переполнения стека. Закрыто 4 года назад . Улучшить этот вопрос Архитектура x86 специально разработана...

184
Почему GCC генерирует такую ​​радикально отличную сборку для почти одного и того же C-кода?

При написании оптимизированной ftolфункции я обнаружил очень странное поведение в GCC 4.6.1. Позвольте мне сначала показать вам код (для ясности я отметил различия): fast_trunc_one, C: int fast_trunc_one(int i) { int mantissa, exponent, sign, r; mantissa = (i & 0x07fffff) | 0x800000; exponent =...

180
Что происходит при запуске компьютерной программы?

Я знаю общую теорию, но не могу вписаться в детали. Я знаю, что программа находится во вторичной памяти компьютера. Как только программа начинает выполнение, она полностью копируется в оперативную память. Затем процессор извлекает за раз несколько инструкций (это зависит от размера шины), помещает...

145
Как работает этот эксплойт с кучи milw0rm?

Я обычно не испытываю затруднений при чтении кода JavaScript, но для этого я не могу понять логику. Код взят из эксплойта, который был опубликован 4 дня назад. Вы можете найти его в milw0rm . Вот код: <html> <div id="replace">x</div> <script> // windows/exec - 148 bytes //...

129
Почему целочисленное переполнение на x86 с GCC вызывает бесконечный цикл?

Следующий код переходит в бесконечный цикл GCC: #include <iostream> using namespace std; int main(){ int i = 0x10000000; int c = 0; do{ c++; i += i; cout << i << endl; }while (i > 0); cout << c << endl; return 0; } Итак, дело в следующем: подписанное целочисленное...