Результаты поиска по запросу "x86-64"
в котором рассматриваются проблемы, связанные с массивом структур и структурой массивов для трехмерных векторов, и почему часто бывает ошибкой всегда пытаться SIMD одной операции вместо использования SIMD для параллельного выполнения нескольких операций.
у, чтобы иметь возможность вручную предсказать, сколько именно произвольной арифметики (то есть без разветвления или памяти, хотя это было бы тоже неплохо), код сборки x86-64 будет принимать конкретную архитектуру с учетом переупорядочения ...
вместо 368, так что массив все еще выровнен по 16 байтов. (IIRC, x86-64 System V ABI, по крайней мере, рекомендует это для массивов с автоматическим хранением с размером> = 16 байт.)
ющий код int main() { int arr[120]; return arr[0]; }Компилируется в это: sub rsp, 360 mov eax, DWORD PTR [rsp-480] add rsp, 360 retЗная, что целые числа составляют 4 байта, а размер массива - 120, массив должен занимать 480 байтов, но из ESP ...
Скорее всего это синдром обратного сравнения
ринд поднял суматохуУсловный переход или перемещение зависит от неинициализированных значений в одном из моих юнит-тестов. Осмотрев сборку, я понял, что следующий код: bool operator==(MyType const& left, MyType const& right) { // ... some code ...
это 2 мопс. (И вызывает остановку перехода SSE / AVX на Haswell, но не Skylake). Кроме того, все эти операции являются частью цепочки зависимостей для изменяемого регистра, в отличие от установки значения в другом регистре и смешивания.
состоит в том, что я хотел бы собрать возвращенные значенияdouble в векторный регистр для обработки для машиныimm width вовремябезСохранение обратно в память первым. Конкретная обработка являетсяvfma с двумя другими операндами, ...
NUnit «отсутствует» GPSVC.DLL в Windows 7/64
Я недавно обновился с Vista / 32 до Win7 / 64. На моей старой машине все работало нормально. К сожалению, на моей новой машине NUnit не загружает мои модульные тесты с сообщением об ошибке«System.IO.FileNotFoundException: не удалось загрузить ...
?) Я уверен, что это сложно в том смысле, о котором мы понятия не имеем.
прочтенияэтот ответ переполнения стека [https://stackoverflow.com/questions/40315803/difference-between-movq-and-movabsq-in-x86-64] , а такжеэтот документ [https://www.cs.cmu.edu/~fp/courses/15213-s07/misc/asm64-handout.pdf]Я до сих пор не ...
@ollpu: да, хорошая ссылка. Но вы должны внимательно прочитать его, чтобы определить закономерности и три особых случая. Обновил этот ответ разделом, который я изначально написал для другого ответа.
ершенно новичок в двоичном кодировании x86-64. Я пытаюсь исправить старый код ассемблера. В любом случае, я пытаюсь сделать что-то вроде этого (синтаксис Intel): mov [rbp+rcx], alАссемблер в настоящее время генерирует это: 88 04 0Dно это не ...
Проблема сохранения байта в регистре сборки x86-64
Я пытаюсь написать функцию, которая определяет длину строки, заданной в качестве первого аргумента, поэтому% rdi будет содержать char * ptr. Когда я звонюmovb (%rdi),%rcx чтобы переместить символ, на который указывает% rdi, в% rcx, я получаю ...
) превращает их в кучу переменных SSA, если это возможно. Так что, по крайней мере, в clang «антиоптимизация» не происходит, обычные оптимизации просто отключены.
бираю этот код на llvm clang Apple LLVM версии 8.0.0 (clang-800.0.42.1): int main() { float a=0.151234; float b=0.2; float c=a+b; printf("%f", c); }Я скомпилировал без спецификаций -O, но я также попытался с -O0 (дает то же самое) и -O2 ...
Следующий минимальный полный пример демонстрирует эту концепцию. В этом примере IOPB настроен так, чтобы разрешить порт доступу к первым портам 0x400 и запретить его для остальных:
ожусь в 32-битном защищенном режиме, работающем с текущим уровнем привилегий (CPL = 0). Я пытаюсь войти в режим v8086, устанавливая флаг EFLAGS.VM (бит 17) в 1 (и IOPL в 0) и выполняю FAR JMP для моего 16-битного кода реального режима. Я получаю ...